diff options
author | Yabin Cui <yabinc@google.com> | 2015-03-12 22:16:03 -0700 |
---|---|---|
committer | Yabin Cui <yabinc@google.com> | 2015-03-12 23:36:29 -0700 |
commit | 64a9c4f697a2588bbcfb20534b8b15b823595d1f (patch) | |
tree | 741786b82d596c864abca1b34a1298dc7c9dd63b /tests/gtest_main.cpp | |
parent | f6f96df5b031b0bf79eb8ad49bd73a3ceab87db5 (diff) | |
download | android_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.cpp | 16 |
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; } //################################################################################ |