Makes gtest report failures in ad hoc test assertions executed before RUN_ALL_TESTS().
This commit is contained in:
parent
985a30360c
commit
682c89f755
@ -754,9 +754,13 @@ class GTEST_API_ UnitTestImpl {
|
||||
// doesn't apply there.)
|
||||
int RunAllTests();
|
||||
|
||||
// Clears the results of all tests, including the ad hoc test.
|
||||
void ClearResult() {
|
||||
// Clears the results of all tests, except the ad hoc tests.
|
||||
void ClearNonAdHocTestResult() {
|
||||
ForEach(test_cases_, TestCase::ClearTestCaseResult);
|
||||
}
|
||||
|
||||
// Clears the results of ad-hoc test assertions.
|
||||
void ClearAdHocTestResult() {
|
||||
ad_hoc_test_result_.Clear();
|
||||
}
|
||||
|
||||
|
@ -3999,7 +3999,9 @@ int UnitTestImpl::RunAllTests() {
|
||||
// Repeats forever if the repeat count is negative.
|
||||
const bool forever = repeat < 0;
|
||||
for (int i = 0; forever || i != repeat; i++) {
|
||||
ClearResult();
|
||||
// We want to preserve failures generated by ad-hoc test
|
||||
// assertions executed before RUN_ALL_TESTS().
|
||||
ClearNonAdHocTestResult();
|
||||
|
||||
const TimeInMillis start = GetTimeInMillis();
|
||||
|
||||
|
@ -35,6 +35,10 @@
|
||||
#include <stdio.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#define GTEST_IMPLEMENTATION_ 1 // Required for the next #include.
|
||||
#include "src/gtest-internal-inl.h"
|
||||
#undef GTEST_IMPLEMENTATION_
|
||||
|
||||
namespace testing {
|
||||
GTEST_DECLARE_string_(filter);
|
||||
}
|
||||
@ -123,6 +127,7 @@ int RunAllTests(MyEnvironment* env, FailureType failure) {
|
||||
env->Reset();
|
||||
env->set_failure_in_set_up(failure);
|
||||
test_was_run = false;
|
||||
testing::internal::GetUnitTestImpl()->ClearAdHocTestResult();
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
|
||||
|
@ -40,15 +40,18 @@ int main(int argc, char **argv) {
|
||||
|
||||
// An ad-hoc assertion outside of all tests.
|
||||
//
|
||||
// This serves two purposes:
|
||||
// This serves three purposes:
|
||||
//
|
||||
// 1. It verifies that an ad-hoc assertion can be executed even if
|
||||
// no test is defined.
|
||||
// 2. We had a bug where the XML output won't be generated if an
|
||||
// 2. It verifies that a failed ad-hoc assertion causes the test
|
||||
// program to fail.
|
||||
// 3. We had a bug where the XML output won't be generated if an
|
||||
// assertion is executed before RUN_ALL_TESTS() is called, even
|
||||
// though --gtest_output=xml is specified. This makes sure the
|
||||
// bug is fixed and doesn't regress.
|
||||
EXPECT_EQ(1, 1);
|
||||
EXPECT_EQ(1, 2);
|
||||
|
||||
return RUN_ALL_TESTS();
|
||||
// The above EXPECT_EQ() should cause RUN_ALL_TESTS() to return non-zero.
|
||||
return RUN_ALL_TESTS() ? 0 : 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user