xref: /aosp_15_r20/external/angle/util/test_utils_unittest_helper.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2019 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker 
6*8975f5c5SAndroid Build Coastguard Worker // system_utils_unittest_helper.cpp: Helper to the SystemUtils.RunApp unittest
7*8975f5c5SAndroid Build Coastguard Worker 
8*8975f5c5SAndroid Build Coastguard Worker #include "test_utils_unittest_helper.h"
9*8975f5c5SAndroid Build Coastguard Worker 
10*8975f5c5SAndroid Build Coastguard Worker #include "../src/tests/test_utils/runner/TestSuite.h"
11*8975f5c5SAndroid Build Coastguard Worker #include "common/system_utils.h"
12*8975f5c5SAndroid Build Coastguard Worker 
13*8975f5c5SAndroid Build Coastguard Worker #include <string.h>
14*8975f5c5SAndroid Build Coastguard Worker 
15*8975f5c5SAndroid Build Coastguard Worker // This variable is also defined in angle_unittest_main.
16*8975f5c5SAndroid Build Coastguard Worker bool gVerbose = false;
17*8975f5c5SAndroid Build Coastguard Worker 
main(int argc,char ** argv)18*8975f5c5SAndroid Build Coastguard Worker int main(int argc, char **argv)
19*8975f5c5SAndroid Build Coastguard Worker {
20*8975f5c5SAndroid Build Coastguard Worker     bool runTestSuite = false;
21*8975f5c5SAndroid Build Coastguard Worker 
22*8975f5c5SAndroid Build Coastguard Worker     for (int argIndex = 1; argIndex < argc; ++argIndex)
23*8975f5c5SAndroid Build Coastguard Worker     {
24*8975f5c5SAndroid Build Coastguard Worker         if (strcmp(argv[argIndex], kRunTestSuite) == 0)
25*8975f5c5SAndroid Build Coastguard Worker         {
26*8975f5c5SAndroid Build Coastguard Worker             runTestSuite = true;
27*8975f5c5SAndroid Build Coastguard Worker         }
28*8975f5c5SAndroid Build Coastguard Worker     }
29*8975f5c5SAndroid Build Coastguard Worker 
30*8975f5c5SAndroid Build Coastguard Worker     if (runTestSuite)
31*8975f5c5SAndroid Build Coastguard Worker     {
32*8975f5c5SAndroid Build Coastguard Worker         angle::TestSuite testSuite(&argc, argv);
33*8975f5c5SAndroid Build Coastguard Worker         return testSuite.run();
34*8975f5c5SAndroid Build Coastguard Worker     }
35*8975f5c5SAndroid Build Coastguard Worker 
36*8975f5c5SAndroid Build Coastguard Worker     if (argc != 3 || strcmp(argv[1], kRunAppTestArg1) != 0 || strcmp(argv[2], kRunAppTestArg2) != 0)
37*8975f5c5SAndroid Build Coastguard Worker     {
38*8975f5c5SAndroid Build Coastguard Worker         fprintf(stderr, "Expected command line:\n%s %s %s\n", argv[0], kRunAppTestArg1,
39*8975f5c5SAndroid Build Coastguard Worker                 kRunAppTestArg2);
40*8975f5c5SAndroid Build Coastguard Worker         return EXIT_FAILURE;
41*8975f5c5SAndroid Build Coastguard Worker     }
42*8975f5c5SAndroid Build Coastguard Worker 
43*8975f5c5SAndroid Build Coastguard Worker     std::string env = angle::GetEnvironmentVar(kRunAppTestEnvVarName);
44*8975f5c5SAndroid Build Coastguard Worker     if (env == "")
45*8975f5c5SAndroid Build Coastguard Worker     {
46*8975f5c5SAndroid Build Coastguard Worker         printf("%s", kRunAppTestStdout);
47*8975f5c5SAndroid Build Coastguard Worker         fflush(stdout);
48*8975f5c5SAndroid Build Coastguard Worker         fprintf(stderr, "%s", kRunAppTestStderr);
49*8975f5c5SAndroid Build Coastguard Worker     }
50*8975f5c5SAndroid Build Coastguard Worker     else
51*8975f5c5SAndroid Build Coastguard Worker     {
52*8975f5c5SAndroid Build Coastguard Worker         fprintf(stderr, "%s", env.c_str());
53*8975f5c5SAndroid Build Coastguard Worker     }
54*8975f5c5SAndroid Build Coastguard Worker 
55*8975f5c5SAndroid Build Coastguard Worker     return EXIT_SUCCESS;
56*8975f5c5SAndroid Build Coastguard Worker }
57