Edit

kc3-lang/angle/src/tests/angle_end2end_tests_main.cpp

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2021-05-11 19:08:01
    Hash : dd686e48
    Message : Test Runner: Add test expectations parser. Moves the test expectations from dEQP into the test runner. Also updates angle_end2end_tests to take an expectations file. Includes some very simple angle_end2end_tests expectations. Note that the expectations in the file are less expressive than the skips we use in the cpp. Bug: angleproject:5951 Change-Id: Ib92235575bc3ea5f3a977ce416b0e78fe806e39b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2892274 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>

  • src/tests/angle_end2end_tests_main.cpp
  • //
    // Copyright 2013 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    #include "gtest/gtest.h"
    #include "test_utils/runner/TestSuite.h"
    #include "util/OSWindow.h"
    
    void ANGLEProcessTestArgs(int *argc, char *argv[]);
    
    // Register* functions handle setting up special tests that need complex parameterization.
    // GoogleTest relies heavily on static initialization to register test functions. This can
    // cause all sorts of issues if the right variables aren't initialized in the right order.
    // This register function needs to be called explicitly after static initialization and
    // before the test launcher starts. This is a safer and generally better way to initialize
    // tests. It's also more similar to how the dEQP Test harness works. In the future we should
    // likely specialize more register functions more like dEQP instead of relying on static init.
    void RegisterContextCompatibilityTests();
    
    // If we ever move to a text-based expectations format, we should move this list in that file.
    namespace
    {
    const char *kSlowTests[]               = {"GLSLTest.VerifyMaxVertexUniformVectors*",
                                "MultiThreadingTest.MultiContextDeleteDraw*"};
    constexpr char kTestExpectationsPath[] = "src/tests/angle_end2end_tests_expectations.txt";
    }  // namespace
    
    int main(int argc, char **argv)
    {
        angle::TestSuite testSuite(&argc, argv);
        ANGLEProcessTestArgs(&argc, argv);
        RegisterContextCompatibilityTests();
        testSuite.registerSlowTests(kSlowTests, ArraySize(kSlowTests));
    
        constexpr size_t kMaxPath = 512;
        std::array<char, kMaxPath> foundDataPath;
        if (!angle::FindTestDataPath(kTestExpectationsPath, foundDataPath.data(), foundDataPath.size()))
        {
            std::cerr << "Unable to find test expectations path (" << kTestExpectationsPath << ")\n";
            return EXIT_FAILURE;
        }
    
        if (!testSuite.loadAllTestExpectationsFromFile(std::string(foundDataPath.data())))
        {
            return EXIT_FAILURE;
        }
    
        return testSuite.run();
    }