blob: 46631b50be1dd29b56669691b25d933e1f62eaac [file] [log] [blame]
brians343bc112013-02-10 01:53:46 +00001#include <stdio.h>
2
3#include "gtest/gtest.h"
4
5extern "C" int run_gtest(char *arg1, char *arg2, char *arg3, char *arg4,
6 char *arg5, char *arg6, char *arg7, char *arg8,
7 char *arg9, char *arg10, char *arg11) {
8 static bool run = false;
9 if (!run) {
10 run = true;
11 } else {
12 printf("error: gtest only supports being run once\n");
13 return -1;
14 }
15
16 char *argv[1 + 11 + 1];
17 // In /tmp in case it wants to write anything relative to "itself".
18 argv[0] = const_cast<char *>("/tmp/aos-crio-googletest-runner");
19 argv[12] = NULL; // the argv passed to main is always NULL-terminated
20 argv[1] = arg1;
21 argv[2] = arg2;
22 argv[3] = arg3;
23 argv[4] = arg4;
24 argv[5] = arg5;
25 argv[6] = arg6;
26 argv[7] = arg7;
27 argv[8] = arg8;
28 argv[9] = arg9;
29 argv[10] = arg10;
30 argv[11] = arg11;
31 int argc = 0;
32 while (argc[argv] != NULL) ++argc;
33
34 testing::GTEST_FLAG(color) = "yes";
35 testing::InitGoogleTest(&argc, argv);
36
37 if (argc > 1) {
38 printf("warning: flags not recognized by gtest passed\n");
39 for (int i = 1; i < argc; ++i) {
40 printf("\t%s\n", argv[i]);
41 }
42 }
43
44 return RUN_ALL_TESTS();
45}