googletest-global-environment-unittest.py
Go to the documentation of this file.
1 # Copyright 2021 Google Inc. All Rights Reserved.
2 #
3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are
5 # met:
6 #
7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following disclaimer
11 # in the documentation and/or other materials provided with the
12 # distribution.
13 # * Neither the name of Google Inc. nor the names of its
14 # contributors may be used to endorse or promote products derived from
15 # this software without specific prior written permission.
16 #
17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 """Unit test for Google Test's global test environment behavior.
29 
30 A user can specify a global test environment via
31 testing::AddGlobalTestEnvironment. Failures in the global environment should
32 result in all unit tests being skipped.
33 
34 This script tests such functionality by invoking
35 googletest-global-environment-unittest_ (a program written with Google Test).
36 """
37 
38 import re
39 from googletest.test import gtest_test_utils
40 
41 
42 def RunAndReturnOutput(args=None):
43  """Runs the test program and returns its output."""
44 
47  'googletest-global-environment-unittest_')
48  ] + (args or [])).output
49 
50 
52  """Tests global test environment failures."""
53 
55  """Tests the behavior of not specifying the fail_fast."""
56 
57  # Run the test.
58  txt = RunAndReturnOutput()
59 
60  # We should see the text of the global environment setup error.
61  self.assertIn('Canned environment setup error', txt)
62 
63  # Our test should have been skipped due to the error, and not treated as a
64  # pass.
65  self.assertIn('[ SKIPPED ] 1 test', txt)
66  self.assertIn('[ PASSED ] 0 tests', txt)
67 
68  # The test case shouldn't have been run.
69  self.assertNotIn('Unexpected call', txt)
70 
72  """Tests the behavior of test environments and gtest_repeat."""
73 
74  # When --gtest_recreate_environments_when_repeating is true, the global test
75  # environment should be set up and torn down for each iteration.
76  txt = RunAndReturnOutput([
77  '--gtest_repeat=2',
78  '--gtest_recreate_environments_when_repeating=true',
79  ])
80 
81  expected_pattern = ('(.|\n)*'
82  r'Repeating all tests \(iteration 1\)'
83  '(.|\n)*'
84  'Global test environment set-up.'
85  '(.|\n)*'
86  'SomeTest.DoesFoo'
87  '(.|\n)*'
88  'Global test environment tear-down'
89  '(.|\n)*'
90  r'Repeating all tests \(iteration 2\)'
91  '(.|\n)*'
92  'Global test environment set-up.'
93  '(.|\n)*'
94  'SomeTest.DoesFoo'
95  '(.|\n)*'
96  'Global test environment tear-down'
97  '(.|\n)*')
98  self.assertRegex(txt, expected_pattern)
99 
101  """Tests environment and --gtest_recreate_environments_when_repeating."""
102 
103  # By default the environment should only be set up and torn down once, at
104  # the start and end of the test respectively.
105  txt = RunAndReturnOutput([
106  '--gtest_repeat=2',
107  ])
108 
109  expected_pattern = ('(.|\n)*'
110  r'Repeating all tests \(iteration 1\)'
111  '(.|\n)*'
112  'Global test environment set-up.'
113  '(.|\n)*'
114  'SomeTest.DoesFoo'
115  '(.|\n)*'
116  r'Repeating all tests \(iteration 2\)'
117  '(.|\n)*'
118  'SomeTest.DoesFoo'
119  '(.|\n)*'
120  'Global test environment tear-down'
121  '(.|\n)*')
122  self.assertRegex(txt, expected_pattern)
123 
124  self.assertEqual(len(re.findall('Global test environment set-up', txt)), 1)
125  self.assertEqual(
126  len(re.findall('Global test environment tear-down', txt)), 1)
127 
128 
129 if __name__ == '__main__':
gtest_test_utils.Subprocess
Definition: bloaty/third_party/googletest/googletest/test/gtest_test_utils.py:202
googletest-global-environment-unittest.GTestGlobalEnvironmentUnitTest.testEnvironmentSetUpFails
def testEnvironmentSetUpFails(self)
Definition: googletest-global-environment-unittest.py:54
googletest-global-environment-unittest.GTestGlobalEnvironmentUnitTest.testEnvironmentSetUpAndTornDownOnce
def testEnvironmentSetUpAndTornDownOnce(self)
Definition: googletest-global-environment-unittest.py:100
gtest_test_utils.GetTestExecutablePath
def GetTestExecutablePath(executable_name, build_dir=None)
Definition: bloaty/third_party/googletest/googletest/test/gtest_test_utils.py:151
googletest-global-environment-unittest.GTestGlobalEnvironmentUnitTest.testEnvironmentSetUpAndTornDownForEachRepeat
def testEnvironmentSetUpAndTornDownForEachRepeat(self)
Definition: googletest-global-environment-unittest.py:71
googletest-global-environment-unittest.RunAndReturnOutput
def RunAndReturnOutput(args=None)
Definition: googletest-global-environment-unittest.py:42
gtest_test_utils.Main
def Main()
Definition: bloaty/third_party/googletest/googletest/test/gtest_test_utils.py:301
len
int len
Definition: abseil-cpp/absl/base/internal/low_level_alloc_test.cc:46
googletest-global-environment-unittest.GTestGlobalEnvironmentUnitTest
Definition: googletest-global-environment-unittest.py:51
gtest_test_utils.TestCase
TestCase
Definition: bloaty/third_party/googletest/googletest/test/gtest_test_utils.py:74


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:59:42