Fix the bug where ad_hoc_test_result() functions of UnitTest and TestCase objects would return failures registered at TestCase and UnitTest scopes, respectively.

This commit is contained in:
Jae Heon Lee 2018-05-07 14:09:37 -07:00
parent 045e7f9ee4
commit ec5ad0f869
2 changed files with 30 additions and 4 deletions

View File

@ -5340,11 +5340,15 @@ OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() {
return os_stack_trace_getter_; return os_stack_trace_getter_;
} }
// Returns the TestResult for the test that's currently running, or // Returns the most specific TestResult currently running.
// the TestResult for the ad hoc test if no test is running.
TestResult* UnitTestImpl::current_test_result() { TestResult* UnitTestImpl::current_test_result() {
return current_test_info_ ? if (current_test_info_ != nullptr) {
&(current_test_info_->result_) : &ad_hoc_test_result_; return &current_test_info_->result_;
}
if (current_test_case_ != nullptr) {
return &current_test_case_->ad_hoc_test_result_;
}
return &ad_hoc_test_result_;
} }
// Shuffles all test cases, and the tests within each test case, // Shuffles all test cases, and the tests within each test case,

View File

@ -7748,3 +7748,25 @@ TEST(SkipPrefixTest, DoesNotSkipWhenPrefixDoesNotMatch) {
EXPECT_FALSE(SkipPrefix("world!", &p)); EXPECT_FALSE(SkipPrefix("world!", &p));
EXPECT_EQ(str, p); EXPECT_EQ(str, p);
} }
// Tests ad_hoc_test_result().
class AdHocTestResultTest : public testing::Test {
protected:
static void SetUpTestCase() {
FAIL() << "A failure happened inside SetUpTestCase().";
}
};
TEST_F(AdHocTestResultTest, AdHocTestResultForTestCaseShowsFailure) {
const testing::TestResult& test_result = testing::UnitTest::GetInstance()
->current_test_case()
->ad_hoc_test_result();
EXPECT_TRUE(test_result.Failed());
}
TEST_F(AdHocTestResultTest, AdHocTestResultTestForUnitTestDoesNotShowFailure) {
const testing::TestResult& test_result =
testing::UnitTest::GetInstance()->ad_hoc_test_result();
EXPECT_FALSE(test_result.Failed());
}