googletest-global-environment-unittest.py (googletest-release-1.11.0) | : | googletest-global-environment-unittest.py (googletest-release-1.12.0) | ||
---|---|---|---|---|
skipping to change at line 38 | skipping to change at line 38 | |||
"""Unit test for Google Test's global test environment behavior. | """Unit test for Google Test's global test environment behavior. | |||
A user can specify a global test environment via | A user can specify a global test environment via | |||
testing::AddGlobalTestEnvironment. Failures in the global environment should | testing::AddGlobalTestEnvironment. Failures in the global environment should | |||
result in all unit tests being skipped. | result in all unit tests being skipped. | |||
This script tests such functionality by invoking | This script tests such functionality by invoking | |||
googletest-global-environment-unittest_ (a program written with Google Test). | googletest-global-environment-unittest_ (a program written with Google Test). | |||
""" | """ | |||
import gtest_test_utils | import re | |||
from googletest.test import gtest_test_utils | ||||
def RunAndReturnOutput(): | def RunAndReturnOutput(args=None): | |||
"""Runs the test program and returns its output.""" | """Runs the test program and returns its output.""" | |||
return gtest_test_utils.Subprocess([ | return gtest_test_utils.Subprocess([ | |||
gtest_test_utils.GetTestExecutablePath( | gtest_test_utils.GetTestExecutablePath( | |||
'googletest-global-environment-unittest_') | 'googletest-global-environment-unittest_') | |||
]).output | ] + (args or [])).output | |||
class GTestGlobalEnvironmentUnitTest(gtest_test_utils.TestCase): | class GTestGlobalEnvironmentUnitTest(gtest_test_utils.TestCase): | |||
"""Tests global test environment failures.""" | """Tests global test environment failures.""" | |||
def testEnvironmentSetUpFails(self): | def testEnvironmentSetUpFails(self): | |||
"""Tests the behavior of not specifying the fail_fast.""" | """Tests the behavior of not specifying the fail_fast.""" | |||
# Run the test. | # Run the test. | |||
txt = RunAndReturnOutput() | txt = RunAndReturnOutput() | |||
skipping to change at line 68 | skipping to change at line 69 | |||
self.assertIn('Canned environment setup error', txt) | self.assertIn('Canned environment setup error', txt) | |||
# Our test should have been skipped due to the error, and not treated as a | # Our test should have been skipped due to the error, and not treated as a | |||
# pass. | # pass. | |||
self.assertIn('[ SKIPPED ] 1 test', txt) | self.assertIn('[ SKIPPED ] 1 test', txt) | |||
self.assertIn('[ PASSED ] 0 tests', txt) | self.assertIn('[ PASSED ] 0 tests', txt) | |||
# The test case shouldn't have been run. | # The test case shouldn't have been run. | |||
self.assertNotIn('Unexpected call', txt) | self.assertNotIn('Unexpected call', txt) | |||
def testEnvironmentSetUpAndTornDownForEachRepeat(self): | ||||
"""Tests the behavior of test environments and gtest_repeat.""" | ||||
# When --gtest_recreate_environments_when_repeating is true, the global test | ||||
# environment should be set up and torn down for each iteration. | ||||
txt = RunAndReturnOutput([ | ||||
'--gtest_repeat=2', | ||||
'--gtest_recreate_environments_when_repeating=true', | ||||
]) | ||||
expected_pattern = ('(.|\n)*' | ||||
r'Repeating all tests \(iteration 1\)' | ||||
'(.|\n)*' | ||||
'Global test environment set-up.' | ||||
'(.|\n)*' | ||||
'SomeTest.DoesFoo' | ||||
'(.|\n)*' | ||||
'Global test environment tear-down' | ||||
'(.|\n)*' | ||||
r'Repeating all tests \(iteration 2\)' | ||||
'(.|\n)*' | ||||
'Global test environment set-up.' | ||||
'(.|\n)*' | ||||
'SomeTest.DoesFoo' | ||||
'(.|\n)*' | ||||
'Global test environment tear-down' | ||||
'(.|\n)*') | ||||
self.assertRegex(txt, expected_pattern) | ||||
def testEnvironmentSetUpAndTornDownOnce(self): | ||||
"""Tests environment and --gtest_recreate_environments_when_repeating.""" | ||||
# By default the environment should only be set up and torn down once, at | ||||
# the start and end of the test respectively. | ||||
txt = RunAndReturnOutput([ | ||||
'--gtest_repeat=2', | ||||
]) | ||||
expected_pattern = ('(.|\n)*' | ||||
r'Repeating all tests \(iteration 1\)' | ||||
'(.|\n)*' | ||||
'Global test environment set-up.' | ||||
'(.|\n)*' | ||||
'SomeTest.DoesFoo' | ||||
'(.|\n)*' | ||||
r'Repeating all tests \(iteration 2\)' | ||||
'(.|\n)*' | ||||
'SomeTest.DoesFoo' | ||||
'(.|\n)*' | ||||
'Global test environment tear-down' | ||||
'(.|\n)*') | ||||
self.assertRegex(txt, expected_pattern) | ||||
self.assertEqual(len(re.findall('Global test environment set-up', txt)), 1) | ||||
self.assertEqual( | ||||
len(re.findall('Global test environment tear-down', txt)), 1) | ||||
if __name__ == '__main__': | if __name__ == '__main__': | |||
gtest_test_utils.Main() | gtest_test_utils.Main() | |||
End of changes. 4 change blocks. | ||||
3 lines changed or deleted | 61 lines changed or added |