]>
git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/third_party/prometheus-cpp/3rdparty/googletest/googletest/test/gtest_list_output_unittest.py
3 # Copyright 2006, Google Inc.
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions are
10 # * Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 # * Redistributions in binary form must reproduce the above
13 # copyright notice, this list of conditions and the following disclaimer
14 # in the documentation and/or other materials provided with the
16 # * Neither the name of Google Inc. nor the names of its
17 # contributors may be used to endorse or promote products derived from
18 # this software without specific prior written permission.
20 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 """Unit test for Google Test's --gtest_list_tests flag.
33 A user can ask Google Test to list all tests by specifying the
34 --gtest_list_tests flag. If output is requested, via --gtest_output=xml
35 or --gtest_output=json, the tests are listed, with extra information in the
37 This script tests such functionality by invoking gtest_list_output_unittest_
38 (a program written with Google Test) the command line flags.
43 import gtest_test_utils
45 GTEST_LIST_TESTS_FLAG
= '--gtest_list_tests'
46 GTEST_OUTPUT_FLAG
= '--gtest_output'
48 EXPECTED_XML
= """<\?xml version="1.0" encoding="UTF-8"\?>
49 <testsuites tests="16" name="AllTests">
50 <testsuite name="FooTest" tests="2">
51 <testcase name="Test1" file=".*gtest_list_output_unittest_.cc" line="43" />
52 <testcase name="Test2" file=".*gtest_list_output_unittest_.cc" line="45" />
54 <testsuite name="FooTestFixture" tests="2">
55 <testcase name="Test3" file=".*gtest_list_output_unittest_.cc" line="48" />
56 <testcase name="Test4" file=".*gtest_list_output_unittest_.cc" line="49" />
58 <testsuite name="TypedTest/0" tests="2">
59 <testcase name="Test7" type_param="int" file=".*gtest_list_output_unittest_.cc" line="60" />
60 <testcase name="Test8" type_param="int" file=".*gtest_list_output_unittest_.cc" line="61" />
62 <testsuite name="TypedTest/1" tests="2">
63 <testcase name="Test7" type_param="bool" file=".*gtest_list_output_unittest_.cc" line="60" />
64 <testcase name="Test8" type_param="bool" file=".*gtest_list_output_unittest_.cc" line="61" />
66 <testsuite name="Single/TypeParameterizedTestSuite/0" tests="2">
67 <testcase name="Test9" type_param="int" file=".*gtest_list_output_unittest_.cc" line="66" />
68 <testcase name="Test10" type_param="int" file=".*gtest_list_output_unittest_.cc" line="67" />
70 <testsuite name="Single/TypeParameterizedTestSuite/1" tests="2">
71 <testcase name="Test9" type_param="bool" file=".*gtest_list_output_unittest_.cc" line="66" />
72 <testcase name="Test10" type_param="bool" file=".*gtest_list_output_unittest_.cc" line="67" />
74 <testsuite name="ValueParam/ValueParamTest" tests="4">
75 <testcase name="Test5/0" value_param="33" file=".*gtest_list_output_unittest_.cc" line="52" />
76 <testcase name="Test5/1" value_param="42" file=".*gtest_list_output_unittest_.cc" line="52" />
77 <testcase name="Test6/0" value_param="33" file=".*gtest_list_output_unittest_.cc" line="53" />
78 <testcase name="Test6/1" value_param="42" file=".*gtest_list_output_unittest_.cc" line="53" />
93 "file": ".*gtest_list_output_unittest_.cc",
98 "file": ".*gtest_list_output_unittest_.cc",
104 "name": "FooTestFixture",
109 "file": ".*gtest_list_output_unittest_.cc",
114 "file": ".*gtest_list_output_unittest_.cc",
120 "name": "TypedTest\\\\/0",
126 "file": ".*gtest_list_output_unittest_.cc",
132 "file": ".*gtest_list_output_unittest_.cc",
138 "name": "TypedTest\\\\/1",
143 "type_param": "bool",
144 "file": ".*gtest_list_output_unittest_.cc",
149 "type_param": "bool",
150 "file": ".*gtest_list_output_unittest_.cc",
156 "name": "Single\\\\/TypeParameterizedTestSuite\\\\/0",
162 "file": ".*gtest_list_output_unittest_.cc",
168 "file": ".*gtest_list_output_unittest_.cc",
174 "name": "Single\\\\/TypeParameterizedTestSuite\\\\/1",
179 "type_param": "bool",
180 "file": ".*gtest_list_output_unittest_.cc",
185 "type_param": "bool",
186 "file": ".*gtest_list_output_unittest_.cc",
192 "name": "ValueParam\\\\/ValueParamTest",
196 "name": "Test5\\\\/0",
198 "file": ".*gtest_list_output_unittest_.cc",
202 "name": "Test5\\\\/1",
204 "file": ".*gtest_list_output_unittest_.cc",
208 "name": "Test6\\\\/0",
210 "file": ".*gtest_list_output_unittest_.cc",
214 "name": "Test6\\\\/1",
216 "file": ".*gtest_list_output_unittest_.cc",
226 class GTestListTestsOutputUnitTest(gtest_test_utils
.TestCase
):
227 """Unit test for Google Test's list tests with output to file functionality.
231 """Verifies XML output for listing tests in a Google Test binary.
233 Runs a test program that generates an empty XML output, and
234 tests that the XML output is expected.
236 self
._TestOutput
('xml', EXPECTED_XML
)
239 """Verifies XML output for listing tests in a Google Test binary.
241 Runs a test program that generates an empty XML output, and
242 tests that the XML output is expected.
244 self
._TestOutput
('json', EXPECTED_JSON
)
246 def _GetOutput(self
, out_format
):
247 file_path
= os
.path
.join(gtest_test_utils
.GetTempDir(),
248 'test_out.' + out_format
)
249 gtest_prog_path
= gtest_test_utils
.GetTestExecutablePath(
250 'gtest_list_output_unittest_')
254 '%s=%s:%s' % (GTEST_OUTPUT_FLAG
, out_format
, file_path
),
257 environ_copy
= os
.environ
.copy()
258 p
= gtest_test_utils
.Subprocess(
259 command
, env
=environ_copy
, working_dir
=gtest_test_utils
.GetTempDir())
261 self
.assertTrue(p
.exited
)
262 self
.assertEqual(0, p
.exit_code
)
263 self
.assertTrue(os
.path
.isfile(file_path
))
264 with
open(file_path
) as f
:
268 def _TestOutput(self
, test_format
, expected_output
):
269 actual
= self
._GetOutput
(test_format
)
270 actual_lines
= actual
.splitlines()
271 expected_lines
= expected_output
.splitlines()
273 for actual_line
in actual_lines
:
274 expected_line
= expected_lines
[line_count
]
275 expected_line_re
= re
.compile(expected_line
.strip())
277 expected_line_re
.match(actual_line
.strip()),
278 ('actual output of "%s",\n'
279 'which does not match expected regex of "%s"\n'
280 'on line %d' % (actual
, expected_output
, line_count
)))
281 line_count
= line_count
+ 1
284 if __name__
== '__main__':
285 os
.environ
['GTEST_STACK_TRACE_DEPTH'] = '1'
286 gtest_test_utils
.Main()