aboutsummaryrefslogtreecommitdiffstats
path: root/tests/gtest_main.cpp
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2015-03-12 22:16:03 -0700
committerYabin Cui <yabinc@google.com>2015-03-12 23:36:29 -0700
commit64a9c4f697a2588bbcfb20534b8b15b823595d1f (patch)
tree741786b82d596c864abca1b34a1298dc7c9dd63b /tests/gtest_main.cpp
parentf6f96df5b031b0bf79eb8ad49bd73a3ceab87db5 (diff)
downloadandroid_bionic-64a9c4f697a2588bbcfb20534b8b15b823595d1f.tar.gz
android_bionic-64a9c4f697a2588bbcfb20534b8b15b823595d1f.tar.bz2
android_bionic-64a9c4f697a2588bbcfb20534b8b15b823595d1f.zip
Make gtest_main exit 1 when some test are failed.
This is the gtest behavior, which I think can make test status judgement more convenient. Change-Id: I7d3c210d1744b954a4148cd905dd5c353207fce8
Diffstat (limited to 'tests/gtest_main.cpp')
-rw-r--r--tests/gtest_main.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/tests/gtest_main.cpp b/tests/gtest_main.cpp
index b1953fc29..bf2b69578 100644
--- a/tests/gtest_main.cpp
+++ b/tests/gtest_main.cpp
@@ -741,7 +741,8 @@ static void CollectChildTestResult(const ChildProcInfo& child_proc, TestCase& te
// We choose to use multi-fork and multi-wait here instead of multi-thread, because it always
// makes deadlock to use fork in multi-thread.
-static void RunTestInSeparateProc(int argc, char** argv, std::vector<TestCase>& testcase_list,
+// Returns true if all tests run successfully, otherwise return false.
+static bool RunTestInSeparateProc(int argc, char** argv, std::vector<TestCase>& testcase_list,
size_t iteration_count, size_t job_count,
const std::string& xml_output_filename) {
// Stop default result printer to avoid environment setup/teardown information for each test.
@@ -759,6 +760,8 @@ static void RunTestInSeparateProc(int argc, char** argv, std::vector<TestCase>&
exit(1);
}
+ bool all_tests_passed = true;
+
for (size_t iteration = 1; iteration <= iteration_count; ++iteration) {
OnTestIterationStartPrint(testcase_list, iteration, iteration_count);
int64_t iteration_start_time_ns = NanoTime();
@@ -806,6 +809,9 @@ static void RunTestInSeparateProc(int argc, char** argv, std::vector<TestCase>&
if (++finished_test_count_list[testcase_id] == testcase.TestCount()) {
++finished_testcase_count;
}
+ if (testcase.GetTestResult(test_id) != TEST_SUCCESS) {
+ all_tests_passed = false;
+ }
it = child_proc_list.erase(it);
} else {
@@ -827,6 +833,8 @@ static void RunTestInSeparateProc(int argc, char** argv, std::vector<TestCase>&
perror("sigprocmask SIG_SETMASK");
exit(1);
}
+
+ return all_tests_passed;
}
static size_t GetProcessorCount() {
@@ -1061,15 +1069,15 @@ int main(int argc, char** argv) {
if (EnumerateTests(argc, arg_list.data(), testcase_list) == false) {
return 1;
}
- RunTestInSeparateProc(argc, arg_list.data(), testcase_list, options.gtest_repeat,
- options.job_count, options.gtest_output);
+ bool all_test_passed = RunTestInSeparateProc(argc, arg_list.data(), testcase_list,
+ options.gtest_repeat, options.job_count, options.gtest_output);
+ return all_test_passed ? 0 : 1;
} else {
argc = static_cast<int>(arg_list.size());
arg_list.push_back(NULL);
testing::InitGoogleTest(&argc, arg_list.data());
return RUN_ALL_TESTS();
}
- return 0;
}
//################################################################################