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.)
 |   // doesn't apply there.)
 | ||||||
|   int RunAllTests(); |   int RunAllTests(); | ||||||
| 
 | 
 | ||||||
|   // Clears the results of all tests, including the ad hoc test.
 |   // Clears the results of all tests, except the ad hoc tests.
 | ||||||
|   void ClearResult() { |   void ClearNonAdHocTestResult() { | ||||||
|     ForEach(test_cases_, TestCase::ClearTestCaseResult); |     ForEach(test_cases_, TestCase::ClearTestCaseResult); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // Clears the results of ad-hoc test assertions.
 | ||||||
|  |   void ClearAdHocTestResult() { | ||||||
|     ad_hoc_test_result_.Clear(); |     ad_hoc_test_result_.Clear(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3999,7 +3999,9 @@ int UnitTestImpl::RunAllTests() { | |||||||
|   // Repeats forever if the repeat count is negative.
 |   // Repeats forever if the repeat count is negative.
 | ||||||
|   const bool forever = repeat < 0; |   const bool forever = repeat < 0; | ||||||
|   for (int i = 0; forever || i != repeat; i++) { |   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(); |     const TimeInMillis start = GetTimeInMillis(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -35,6 +35,10 @@ | |||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <gtest/gtest.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 { | namespace testing { | ||||||
| GTEST_DECLARE_string_(filter); | GTEST_DECLARE_string_(filter); | ||||||
| } | } | ||||||
| @ -123,6 +127,7 @@ int RunAllTests(MyEnvironment* env, FailureType failure) { | |||||||
|   env->Reset(); |   env->Reset(); | ||||||
|   env->set_failure_in_set_up(failure); |   env->set_failure_in_set_up(failure); | ||||||
|   test_was_run = false; |   test_was_run = false; | ||||||
|  |   testing::internal::GetUnitTestImpl()->ClearAdHocTestResult(); | ||||||
|   return RUN_ALL_TESTS(); |   return RUN_ALL_TESTS(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -40,15 +40,18 @@ int main(int argc, char **argv) { | |||||||
| 
 | 
 | ||||||
|   // An ad-hoc assertion outside of all tests.
 |   // 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
 |   // 1. It verifies that an ad-hoc assertion can be executed even if
 | ||||||
|   //    no test is defined.
 |   //    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
 |   //    assertion is executed before RUN_ALL_TESTS() is called, even
 | ||||||
|   //    though --gtest_output=xml is specified.  This makes sure the
 |   //    though --gtest_output=xml is specified.  This makes sure the
 | ||||||
|   //    bug is fixed and doesn't regress.
 |   //    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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user