#ifdef UNSAFE_BUFFERS_BUILD
# pragma allow_unsafe_buffers
#endif
#include "gtest/gtest.h"
#if defined(ANGLE_HAS_RAPIDJSON)
# include "test_utils/runner/TestSuite.h"
#endif
#include "util/OSWindow.h"
void ANGLEProcessTestArgs(int *argc, char *argv[]);
void RegisterContextCompatibilityTests();
namespace
{
bool HasArg(int argc, char **argv, const char *arg)
{
for (int i = 1; i < argc; ++i)
{
if (strstr(argv[i], arg) != nullptr)
{
return true;
}
}
return false;
}
}
int main(int argc, char **argv)
{
if (!HasArg(argc, argv, "--list-tests") && !HasArg(argc, argv, "--gtest_list_tests") &&
HasArg(argc, argv, "--use-gl"))
{
std::cerr << "--use-gl isn't supported by end2end tests - use the GN arg instead: "
"angle_test_enable_system_egl=true\n";
return EXIT_FAILURE;
}
#if defined(ANGLE_HAS_RAPIDJSON)
ANGLEProcessTestArgs(&argc, argv);
auto registerTestsCallback = [] {
if (!IsTSan())
{
RegisterContextCompatibilityTests();
}
};
angle::TestSuite testSuite(&argc, argv, registerTestsCallback);
constexpr char kTestExpectationsPath[] = "src/tests/angle_end2end_tests_expectations.txt";
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;
}
testSuite.setTestExpectationsAllowMask(angle::GPUTestExpectationsParser::kGpuTestSkip |
angle::GPUTestExpectationsParser::kGpuTestTimeout);
if (!testSuite.loadAllTestExpectationsFromFile(std::string(foundDataPath.data())))
{
return EXIT_FAILURE;
}
return testSuite.run();
#else
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
#endif
}