]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/opentelemetry-cpp/third_party/prometheus-cpp/3rdparty/googletest/googletest/test/googletest-json-outfiles-test.py
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / third_party / prometheus-cpp / 3rdparty / googletest / googletest / test / googletest-json-outfiles-test.py
CommitLineData
31f18b77 1#!/usr/bin/env python
1e59de90 2# Copyright 2018, Google Inc.
31f18b77
FG
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions are
7# met:
8#
9# * Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# * Redistributions in binary form must reproduce the above
12# copyright notice, this list of conditions and the following disclaimer
13# in the documentation and/or other materials provided with the
14# distribution.
15# * Neither the name of Google Inc. nor the names of its
16# contributors may be used to endorse or promote products derived from
17# this software without specific prior written permission.
18#
19# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
1e59de90 31"""Unit test for the gtest_json_output module."""
31f18b77 32
1e59de90 33import json
31f18b77 34import os
1e59de90 35import gtest_json_test_utils
31f18b77 36import gtest_test_utils
31f18b77 37
1e59de90
TL
38GTEST_OUTPUT_SUBDIR = 'json_outfiles'
39GTEST_OUTPUT_1_TEST = 'gtest_xml_outfile1_test_'
40GTEST_OUTPUT_2_TEST = 'gtest_xml_outfile2_test_'
41
42EXPECTED_1 = {
43 u'tests':
44 1,
45 u'failures':
46 0,
47 u'disabled':
48 0,
49 u'errors':
50 0,
51 u'time':
52 u'*',
53 u'timestamp':
54 u'*',
55 u'name':
56 u'AllTests',
57 u'testsuites': [{
58 u'name':
59 u'PropertyOne',
60 u'tests':
61 1,
62 u'failures':
63 0,
64 u'disabled':
65 0,
66 u'errors':
67 0,
68 u'time':
69 u'*',
70 u'timestamp':
71 u'*',
72 u'testsuite': [{
73 u'name': u'TestSomeProperties',
74 u'status': u'RUN',
75 u'result': u'COMPLETED',
76 u'time': u'*',
77 u'timestamp': u'*',
78 u'classname': u'PropertyOne',
79 u'SetUpProp': u'1',
80 u'TestSomeProperty': u'1',
81 u'TearDownProp': u'1',
82 }],
83 }],
84}
85
86EXPECTED_2 = {
87 u'tests':
88 1,
89 u'failures':
90 0,
91 u'disabled':
92 0,
93 u'errors':
94 0,
95 u'time':
96 u'*',
97 u'timestamp':
98 u'*',
99 u'name':
100 u'AllTests',
101 u'testsuites': [{
102 u'name':
103 u'PropertyTwo',
104 u'tests':
105 1,
106 u'failures':
107 0,
108 u'disabled':
109 0,
110 u'errors':
111 0,
112 u'time':
113 u'*',
114 u'timestamp':
115 u'*',
116 u'testsuite': [{
117 u'name': u'TestSomeProperties',
118 u'status': u'RUN',
119 u'result': u'COMPLETED',
120 u'timestamp': u'*',
121 u'time': u'*',
122 u'classname': u'PropertyTwo',
123 u'SetUpProp': u'2',
124 u'TestSomeProperty': u'2',
125 u'TearDownProp': u'2',
126 }],
127 }],
128}
129
130
131class GTestJsonOutFilesTest(gtest_test_utils.TestCase):
132 """Unit test for Google Test's JSON output functionality."""
31f18b77
FG
133
134 def setUp(self):
135 # We want the trailing '/' that the last "" provides in os.path.join, for
136 # telling Google Test to create an output directory instead of a single file
137 # for xml output.
138 self.output_dir_ = os.path.join(gtest_test_utils.GetTempDir(),
1e59de90 139 GTEST_OUTPUT_SUBDIR, '')
31f18b77
FG
140 self.DeleteFilesAndDir()
141
142 def tearDown(self):
143 self.DeleteFilesAndDir()
144
145 def DeleteFilesAndDir(self):
146 try:
1e59de90 147 os.remove(os.path.join(self.output_dir_, GTEST_OUTPUT_1_TEST + '.json'))
31f18b77
FG
148 except os.error:
149 pass
150 try:
1e59de90 151 os.remove(os.path.join(self.output_dir_, GTEST_OUTPUT_2_TEST + '.json'))
31f18b77
FG
152 except os.error:
153 pass
154 try:
155 os.rmdir(self.output_dir_)
156 except os.error:
157 pass
158
159 def testOutfile1(self):
1e59de90 160 self._TestOutFile(GTEST_OUTPUT_1_TEST, EXPECTED_1)
31f18b77
FG
161
162 def testOutfile2(self):
1e59de90 163 self._TestOutFile(GTEST_OUTPUT_2_TEST, EXPECTED_2)
31f18b77 164
1e59de90 165 def _TestOutFile(self, test_name, expected):
31f18b77 166 gtest_prog_path = gtest_test_utils.GetTestExecutablePath(test_name)
1e59de90 167 command = [gtest_prog_path, '--gtest_output=json:%s' % self.output_dir_]
31f18b77
FG
168 p = gtest_test_utils.Subprocess(command,
169 working_dir=gtest_test_utils.GetTempDir())
170 self.assert_(p.exited)
171 self.assertEquals(0, p.exit_code)
172
1e59de90 173 output_file_name1 = test_name + '.json'
31f18b77
FG
174 output_file1 = os.path.join(self.output_dir_, output_file_name1)
175 output_file_name2 = 'lt-' + output_file_name1
176 output_file2 = os.path.join(self.output_dir_, output_file_name2)
177 self.assert_(os.path.isfile(output_file1) or os.path.isfile(output_file2),
178 output_file1)
179
31f18b77 180 if os.path.isfile(output_file1):
1e59de90
TL
181 with open(output_file1) as f:
182 actual = json.load(f)
31f18b77 183 else:
1e59de90
TL
184 with open(output_file2) as f:
185 actual = json.load(f)
186 self.assertEqual(expected, gtest_json_test_utils.normalize(actual))
31f18b77
FG
187
188
1e59de90
TL
189if __name__ == '__main__':
190 os.environ['GTEST_STACK_TRACE_DEPTH'] = '0'
31f18b77 191 gtest_test_utils.Main()