bloaty/third_party/googletest/googletest/test/googletest-json-output-unittest.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 # Copyright 2018, Google Inc.
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 
31 """Unit test for the gtest_json_output module."""
32 
33 import datetime
34 import errno
35 import json
36 import os
37 import re
38 import sys
39 
40 import gtest_json_test_utils
41 import gtest_test_utils
42 
43 GTEST_FILTER_FLAG = '--gtest_filter'
44 GTEST_LIST_TESTS_FLAG = '--gtest_list_tests'
45 GTEST_OUTPUT_FLAG = '--gtest_output'
46 GTEST_DEFAULT_OUTPUT_FILE = 'test_detail.json'
47 GTEST_PROGRAM_NAME = 'gtest_xml_output_unittest_'
48 
49 # The flag indicating stacktraces are not supported
50 NO_STACKTRACE_SUPPORT_FLAG = '--no_stacktrace_support'
51 
52 SUPPORTS_STACK_TRACES = NO_STACKTRACE_SUPPORT_FLAG not in sys.argv
53 
54 if SUPPORTS_STACK_TRACES:
55  STACK_TRACE_TEMPLATE = '\nStack trace:\n*'
56 else:
57  STACK_TRACE_TEMPLATE = ''
58 
59 EXPECTED_NON_EMPTY = {
60  u'tests':
61  24,
62  u'failures':
63  4,
64  u'disabled':
65  2,
66  u'errors':
67  0,
68  u'timestamp':
69  u'*',
70  u'time':
71  u'*',
72  u'ad_hoc_property':
73  u'42',
74  u'name':
75  u'AllTests',
76  u'testsuites': [{
77  u'name':
78  u'SuccessfulTest',
79  u'tests':
80  1,
81  u'failures':
82  0,
83  u'disabled':
84  0,
85  u'errors':
86  0,
87  u'time':
88  u'*',
89  u'timestamp':
90  u'*',
91  u'testsuite': [{
92  u'name': u'Succeeds',
93  u'status': u'RUN',
94  u'result': u'COMPLETED',
95  u'time': u'*',
96  u'timestamp': u'*',
97  u'classname': u'SuccessfulTest'
98  }]
99  }, {
100  u'name':
101  u'FailedTest',
102  u'tests':
103  1,
104  u'failures':
105  1,
106  u'disabled':
107  0,
108  u'errors':
109  0,
110  u'time':
111  u'*',
112  u'timestamp':
113  u'*',
114  u'testsuite': [{
115  u'name':
116  u'Fails',
117  u'status':
118  u'RUN',
119  u'result':
120  u'COMPLETED',
121  u'time':
122  u'*',
123  u'timestamp':
124  u'*',
125  u'classname':
126  u'FailedTest',
127  u'failures': [{
128  u'failure': u'gtest_xml_output_unittest_.cc:*\n'
129  u'Expected equality of these values:\n'
130  u' 1\n 2' + STACK_TRACE_TEMPLATE,
131  u'type': u''
132  }]
133  }]
134  }, {
135  u'name':
136  u'DisabledTest',
137  u'tests':
138  1,
139  u'failures':
140  0,
141  u'disabled':
142  1,
143  u'errors':
144  0,
145  u'time':
146  u'*',
147  u'timestamp':
148  u'*',
149  u'testsuite': [{
150  u'name': u'DISABLED_test_not_run',
151  u'status': u'NOTRUN',
152  u'result': u'SUPPRESSED',
153  u'time': u'*',
154  u'timestamp': u'*',
155  u'classname': u'DisabledTest'
156  }]
157  }, {
158  u'name':
159  u'SkippedTest',
160  u'tests':
161  1,
162  u'failures':
163  0,
164  u'disabled':
165  0,
166  u'errors':
167  0,
168  u'time':
169  u'*',
170  u'timestamp':
171  u'*',
172  u'testsuite': [{
173  u'name': u'Skipped',
174  u'status': u'RUN',
175  u'result': u'SKIPPED',
176  u'time': u'*',
177  u'timestamp': u'*',
178  u'classname': u'SkippedTest'
179  }]
180  }, {
181  u'name':
182  u'MixedResultTest',
183  u'tests':
184  3,
185  u'failures':
186  1,
187  u'disabled':
188  1,
189  u'errors':
190  0,
191  u'time':
192  u'*',
193  u'timestamp':
194  u'*',
195  u'testsuite': [{
196  u'name': u'Succeeds',
197  u'status': u'RUN',
198  u'result': u'COMPLETED',
199  u'time': u'*',
200  u'timestamp': u'*',
201  u'classname': u'MixedResultTest'
202  }, {
203  u'name':
204  u'Fails',
205  u'status':
206  u'RUN',
207  u'result':
208  u'COMPLETED',
209  u'time':
210  u'*',
211  u'timestamp':
212  u'*',
213  u'classname':
214  u'MixedResultTest',
215  u'failures': [{
216  u'failure': u'gtest_xml_output_unittest_.cc:*\n'
217  u'Expected equality of these values:\n'
218  u' 1\n 2' + STACK_TRACE_TEMPLATE,
219  u'type': u''
220  }, {
221  u'failure': u'gtest_xml_output_unittest_.cc:*\n'
222  u'Expected equality of these values:\n'
223  u' 2\n 3' + STACK_TRACE_TEMPLATE,
224  u'type': u''
225  }]
226  }, {
227  u'name': u'DISABLED_test',
228  u'status': u'NOTRUN',
229  u'result': u'SUPPRESSED',
230  u'time': u'*',
231  u'timestamp': u'*',
232  u'classname': u'MixedResultTest'
233  }]
234  }, {
235  u'name':
236  u'XmlQuotingTest',
237  u'tests':
238  1,
239  u'failures':
240  1,
241  u'disabled':
242  0,
243  u'errors':
244  0,
245  u'time':
246  u'*',
247  u'timestamp':
248  u'*',
249  u'testsuite': [{
250  u'name':
251  u'OutputsCData',
252  u'status':
253  u'RUN',
254  u'result':
255  u'COMPLETED',
256  u'time':
257  u'*',
258  u'timestamp':
259  u'*',
260  u'classname':
261  u'XmlQuotingTest',
262  u'failures': [{
263  u'failure': u'gtest_xml_output_unittest_.cc:*\n'
264  u'Failed\nXML output: <?xml encoding="utf-8">'
265  u'<top><![CDATA[cdata text]]></top>' +
266  STACK_TRACE_TEMPLATE,
267  u'type': u''
268  }]
269  }]
270  }, {
271  u'name':
272  u'InvalidCharactersTest',
273  u'tests':
274  1,
275  u'failures':
276  1,
277  u'disabled':
278  0,
279  u'errors':
280  0,
281  u'time':
282  u'*',
283  u'timestamp':
284  u'*',
285  u'testsuite': [{
286  u'name':
287  u'InvalidCharactersInMessage',
288  u'status':
289  u'RUN',
290  u'result':
291  u'COMPLETED',
292  u'time':
293  u'*',
294  u'timestamp':
295  u'*',
296  u'classname':
297  u'InvalidCharactersTest',
298  u'failures': [{
299  u'failure': u'gtest_xml_output_unittest_.cc:*\n'
300  u'Failed\nInvalid characters in brackets'
301  u' [\x01\x02]' + STACK_TRACE_TEMPLATE,
302  u'type': u''
303  }]
304  }]
305  }, {
306  u'name':
307  u'PropertyRecordingTest',
308  u'tests':
309  4,
310  u'failures':
311  0,
312  u'disabled':
313  0,
314  u'errors':
315  0,
316  u'time':
317  u'*',
318  u'timestamp':
319  u'*',
320  u'SetUpTestSuite':
321  u'yes',
322  u'TearDownTestSuite':
323  u'aye',
324  u'testsuite': [{
325  u'name': u'OneProperty',
326  u'status': u'RUN',
327  u'result': u'COMPLETED',
328  u'time': u'*',
329  u'timestamp': u'*',
330  u'classname': u'PropertyRecordingTest',
331  u'key_1': u'1'
332  }, {
333  u'name': u'IntValuedProperty',
334  u'status': u'RUN',
335  u'result': u'COMPLETED',
336  u'time': u'*',
337  u'timestamp': u'*',
338  u'classname': u'PropertyRecordingTest',
339  u'key_int': u'1'
340  }, {
341  u'name': u'ThreeProperties',
342  u'status': u'RUN',
343  u'result': u'COMPLETED',
344  u'time': u'*',
345  u'timestamp': u'*',
346  u'classname': u'PropertyRecordingTest',
347  u'key_1': u'1',
348  u'key_2': u'2',
349  u'key_3': u'3'
350  }, {
351  u'name': u'TwoValuesForOneKeyUsesLastValue',
352  u'status': u'RUN',
353  u'result': u'COMPLETED',
354  u'time': u'*',
355  u'timestamp': u'*',
356  u'classname': u'PropertyRecordingTest',
357  u'key_1': u'2'
358  }]
359  }, {
360  u'name':
361  u'NoFixtureTest',
362  u'tests':
363  3,
364  u'failures':
365  0,
366  u'disabled':
367  0,
368  u'errors':
369  0,
370  u'time':
371  u'*',
372  u'timestamp':
373  u'*',
374  u'testsuite': [{
375  u'name': u'RecordProperty',
376  u'status': u'RUN',
377  u'result': u'COMPLETED',
378  u'time': u'*',
379  u'timestamp': u'*',
380  u'classname': u'NoFixtureTest',
381  u'key': u'1'
382  }, {
383  u'name': u'ExternalUtilityThatCallsRecordIntValuedProperty',
384  u'status': u'RUN',
385  u'result': u'COMPLETED',
386  u'time': u'*',
387  u'timestamp': u'*',
388  u'classname': u'NoFixtureTest',
389  u'key_for_utility_int': u'1'
390  }, {
391  u'name': u'ExternalUtilityThatCallsRecordStringValuedProperty',
392  u'status': u'RUN',
393  u'result': u'COMPLETED',
394  u'time': u'*',
395  u'timestamp': u'*',
396  u'classname': u'NoFixtureTest',
397  u'key_for_utility_string': u'1'
398  }]
399  }, {
400  u'name':
401  u'TypedTest/0',
402  u'tests':
403  1,
404  u'failures':
405  0,
406  u'disabled':
407  0,
408  u'errors':
409  0,
410  u'time':
411  u'*',
412  u'timestamp':
413  u'*',
414  u'testsuite': [{
415  u'name': u'HasTypeParamAttribute',
416  u'type_param': u'int',
417  u'status': u'RUN',
418  u'result': u'COMPLETED',
419  u'time': u'*',
420  u'timestamp': u'*',
421  u'classname': u'TypedTest/0'
422  }]
423  }, {
424  u'name':
425  u'TypedTest/1',
426  u'tests':
427  1,
428  u'failures':
429  0,
430  u'disabled':
431  0,
432  u'errors':
433  0,
434  u'time':
435  u'*',
436  u'timestamp':
437  u'*',
438  u'testsuite': [{
439  u'name': u'HasTypeParamAttribute',
440  u'type_param': u'long',
441  u'status': u'RUN',
442  u'result': u'COMPLETED',
443  u'time': u'*',
444  u'timestamp': u'*',
445  u'classname': u'TypedTest/1'
446  }]
447  }, {
448  u'name':
449  u'Single/TypeParameterizedTestSuite/0',
450  u'tests':
451  1,
452  u'failures':
453  0,
454  u'disabled':
455  0,
456  u'errors':
457  0,
458  u'time':
459  u'*',
460  u'timestamp':
461  u'*',
462  u'testsuite': [{
463  u'name': u'HasTypeParamAttribute',
464  u'type_param': u'int',
465  u'status': u'RUN',
466  u'result': u'COMPLETED',
467  u'time': u'*',
468  u'timestamp': u'*',
469  u'classname': u'Single/TypeParameterizedTestSuite/0'
470  }]
471  }, {
472  u'name':
473  u'Single/TypeParameterizedTestSuite/1',
474  u'tests':
475  1,
476  u'failures':
477  0,
478  u'disabled':
479  0,
480  u'errors':
481  0,
482  u'time':
483  u'*',
484  u'timestamp':
485  u'*',
486  u'testsuite': [{
487  u'name': u'HasTypeParamAttribute',
488  u'type_param': u'long',
489  u'status': u'RUN',
490  u'result': u'COMPLETED',
491  u'time': u'*',
492  u'timestamp': u'*',
493  u'classname': u'Single/TypeParameterizedTestSuite/1'
494  }]
495  }, {
496  u'name':
497  u'Single/ValueParamTest',
498  u'tests':
499  4,
500  u'failures':
501  0,
502  u'disabled':
503  0,
504  u'errors':
505  0,
506  u'time':
507  u'*',
508  u'timestamp':
509  u'*',
510  u'testsuite': [{
511  u'name': u'HasValueParamAttribute/0',
512  u'value_param': u'33',
513  u'status': u'RUN',
514  u'result': u'COMPLETED',
515  u'time': u'*',
516  u'timestamp': u'*',
517  u'classname': u'Single/ValueParamTest'
518  }, {
519  u'name': u'HasValueParamAttribute/1',
520  u'value_param': u'42',
521  u'status': u'RUN',
522  u'result': u'COMPLETED',
523  u'time': u'*',
524  u'timestamp': u'*',
525  u'classname': u'Single/ValueParamTest'
526  }, {
527  u'name': u'AnotherTestThatHasValueParamAttribute/0',
528  u'value_param': u'33',
529  u'status': u'RUN',
530  u'result': u'COMPLETED',
531  u'time': u'*',
532  u'timestamp': u'*',
533  u'classname': u'Single/ValueParamTest'
534  }, {
535  u'name': u'AnotherTestThatHasValueParamAttribute/1',
536  u'value_param': u'42',
537  u'status': u'RUN',
538  u'result': u'COMPLETED',
539  u'time': u'*',
540  u'timestamp': u'*',
541  u'classname': u'Single/ValueParamTest'
542  }]
543  }]
544 }
545 
546 EXPECTED_FILTERED = {
547  u'tests':
548  1,
549  u'failures':
550  0,
551  u'disabled':
552  0,
553  u'errors':
554  0,
555  u'time':
556  u'*',
557  u'timestamp':
558  u'*',
559  u'name':
560  u'AllTests',
561  u'ad_hoc_property':
562  u'42',
563  u'testsuites': [{
564  u'name':
565  u'SuccessfulTest',
566  u'tests':
567  1,
568  u'failures':
569  0,
570  u'disabled':
571  0,
572  u'errors':
573  0,
574  u'time':
575  u'*',
576  u'timestamp':
577  u'*',
578  u'testsuite': [{
579  u'name': u'Succeeds',
580  u'status': u'RUN',
581  u'result': u'COMPLETED',
582  u'time': u'*',
583  u'timestamp': u'*',
584  u'classname': u'SuccessfulTest',
585  }]
586  }],
587 }
588 
589 EXPECTED_EMPTY = {
590  u'tests': 0,
591  u'failures': 0,
592  u'disabled': 0,
593  u'errors': 0,
594  u'time': u'*',
595  u'timestamp': u'*',
596  u'name': u'AllTests',
597  u'testsuites': [],
598 }
599 
600 GTEST_PROGRAM_PATH = gtest_test_utils.GetTestExecutablePath(GTEST_PROGRAM_NAME)
601 
602 SUPPORTS_TYPED_TESTS = 'TypedTest' in gtest_test_utils.Subprocess(
603  [GTEST_PROGRAM_PATH, GTEST_LIST_TESTS_FLAG], capture_stderr=False).output
604 
605 
607  """Unit test for Google Test's JSON output functionality.
608  """
609 
610  # This test currently breaks on platforms that do not support typed and
611  # type-parameterized tests, so we don't run it under them.
612  if SUPPORTS_TYPED_TESTS:
613 
615  """Verifies JSON output for a Google Test binary with non-empty output.
616 
617  Runs a test program that generates a non-empty JSON output, and
618  tests that the JSON output is expected.
619  """
620  self._TestJsonOutput(GTEST_PROGRAM_NAME, EXPECTED_NON_EMPTY, 1)
621 
623  """Verifies JSON output for a Google Test binary without actual tests.
624 
625  Runs a test program that generates an empty JSON output, and
626  tests that the JSON output is expected.
627  """
628 
629  self._TestJsonOutput('gtest_no_test_unittest', EXPECTED_EMPTY, 0)
630 
632  """Checks whether the timestamp attribute in the JSON output is valid.
633 
634  Runs a test program that generates an empty JSON output, and checks if
635  the timestamp attribute in the testsuites tag is valid.
636  """
637  actual = self._GetJsonOutput('gtest_no_test_unittest', [], 0)
638  date_time_str = actual['timestamp']
639  # datetime.strptime() is only available in Python 2.5+ so we have to
640  # parse the expected datetime manually.
641  match = re.match(r'(\d+)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)', date_time_str)
642  self.assertTrue(
643  re.match,
644  'JSON datettime string %s has incorrect format' % date_time_str)
645  date_time_from_json = datetime.datetime(
646  year=int(match.group(1)), month=int(match.group(2)),
647  day=int(match.group(3)), hour=int(match.group(4)),
648  minute=int(match.group(5)), second=int(match.group(6)))
649 
650  time_delta = abs(datetime.datetime.now() - date_time_from_json)
651  # timestamp value should be near the current local time
652  self.assertTrue(time_delta < datetime.timedelta(seconds=600),
653  'time_delta is %s' % time_delta)
654 
656  """Verifies the default output file name.
657 
658  Confirms that Google Test produces an JSON output file with the expected
659  default name if no name is explicitly specified.
660  """
661  output_file = os.path.join(gtest_test_utils.GetTempDir(),
662  GTEST_DEFAULT_OUTPUT_FILE)
663  gtest_prog_path = gtest_test_utils.GetTestExecutablePath(
664  'gtest_no_test_unittest')
665  try:
666  os.remove(output_file)
667  except OSError:
668  e = sys.exc_info()[1]
669  if e.errno != errno.ENOENT:
670  raise
671 
673  [gtest_prog_path, '%s=json' % GTEST_OUTPUT_FLAG],
674  working_dir=gtest_test_utils.GetTempDir())
675  self.assert_(p.exited)
676  self.assertEquals(0, p.exit_code)
677  self.assert_(os.path.isfile(output_file))
678 
680  """Verifies that no JSON output is generated.
681 
682  Tests that no JSON file is generated if the default JSON listener is
683  shut down before RUN_ALL_TESTS is invoked.
684  """
685 
686  json_path = os.path.join(gtest_test_utils.GetTempDir(),
687  GTEST_PROGRAM_NAME + 'out.json')
688  if os.path.isfile(json_path):
689  os.remove(json_path)
690 
691  command = [GTEST_PROGRAM_PATH,
692  '%s=json:%s' % (GTEST_OUTPUT_FLAG, json_path),
693  '--shut_down_xml']
694  p = gtest_test_utils.Subprocess(command)
695  if p.terminated_by_signal:
696  # p.signal is available only if p.terminated_by_signal is True.
697  self.assertFalse(
698  p.terminated_by_signal,
699  '%s was killed by signal %d' % (GTEST_PROGRAM_NAME, p.signal))
700  else:
701  self.assert_(p.exited)
702  self.assertEquals(1, p.exit_code,
703  "'%s' exited with code %s, which doesn't match "
704  'the expected exit code %s.'
705  % (command, p.exit_code, 1))
706 
707  self.assert_(not os.path.isfile(json_path))
708 
710  """Verifies JSON output when a filter is applied.
711 
712  Runs a test program that executes only some tests and verifies that
713  non-selected tests do not show up in the JSON output.
714  """
715 
716  self._TestJsonOutput(GTEST_PROGRAM_NAME, EXPECTED_FILTERED, 0,
717  extra_args=['%s=SuccessfulTest.*' % GTEST_FILTER_FLAG])
718 
719  def _GetJsonOutput(self, gtest_prog_name, extra_args, expected_exit_code):
720  """Returns the JSON output generated by running the program gtest_prog_name.
721 
722  Furthermore, the program's exit code must be expected_exit_code.
723 
724  Args:
725  gtest_prog_name: Google Test binary name.
726  extra_args: extra arguments to binary invocation.
727  expected_exit_code: program's exit code.
728  """
729  json_path = os.path.join(gtest_test_utils.GetTempDir(),
730  gtest_prog_name + 'out.json')
731  gtest_prog_path = gtest_test_utils.GetTestExecutablePath(gtest_prog_name)
732 
733  command = (
734  [gtest_prog_path, '%s=json:%s' % (GTEST_OUTPUT_FLAG, json_path)] +
735  extra_args
736  )
737  p = gtest_test_utils.Subprocess(command)
738  if p.terminated_by_signal:
739  self.assert_(False,
740  '%s was killed by signal %d' % (gtest_prog_name, p.signal))
741  else:
742  self.assert_(p.exited)
743  self.assertEquals(expected_exit_code, p.exit_code,
744  "'%s' exited with code %s, which doesn't match "
745  'the expected exit code %s.'
746  % (command, p.exit_code, expected_exit_code))
747  with open(json_path) as f:
748  actual = json.load(f)
749  return actual
750 
751  def _TestJsonOutput(self, gtest_prog_name, expected,
752  expected_exit_code, extra_args=None):
753  """Checks the JSON output generated by the Google Test binary.
754 
755  Asserts that the JSON document generated by running the program
756  gtest_prog_name matches expected_json, a string containing another
757  JSON document. Furthermore, the program's exit code must be
758  expected_exit_code.
759 
760  Args:
761  gtest_prog_name: Google Test binary name.
762  expected: expected output.
763  expected_exit_code: program's exit code.
764  extra_args: extra arguments to binary invocation.
765  """
766 
767  actual = self._GetJsonOutput(gtest_prog_name, extra_args or [],
768  expected_exit_code)
769  self.assertEqual(expected, gtest_json_test_utils.normalize(actual))
770 
771 
772 if __name__ == '__main__':
773  if NO_STACKTRACE_SUPPORT_FLAG in sys.argv:
774  # unittest.main() can't handle unknown flags
775  sys.argv.remove(NO_STACKTRACE_SUPPORT_FLAG)
776 
777  os.environ['GTEST_STACK_TRACE_DEPTH'] = '1'
googletest-json-output-unittest.GTestJsonOutputUnitTest._TestJsonOutput
def _TestJsonOutput(self, gtest_prog_name, expected, expected_exit_code, extra_args=None)
Definition: bloaty/third_party/googletest/googletest/test/googletest-json-output-unittest.py:751
googletest-json-output-unittest.GTestJsonOutputUnitTest.testFilteredTestJsonOutput
def testFilteredTestJsonOutput(self)
Definition: bloaty/third_party/googletest/googletest/test/googletest-json-output-unittest.py:709
gtest_test_utils.Subprocess
Definition: bloaty/third_party/googletest/googletest/test/gtest_test_utils.py:202
googletest-json-output-unittest.GTestJsonOutputUnitTest.testSuppressedJsonOutput
def testSuppressedJsonOutput(self)
Definition: bloaty/third_party/googletest/googletest/test/googletest-json-output-unittest.py:679
googletest-json-output-unittest.GTestJsonOutputUnitTest._GetJsonOutput
def _GetJsonOutput(self, gtest_prog_name, extra_args, expected_exit_code)
Definition: bloaty/third_party/googletest/googletest/test/googletest-json-output-unittest.py:719
xds_interop_client.int
int
Definition: xds_interop_client.py:113
gtest_test_utils.GetTempDir
def GetTempDir()
Definition: bloaty/third_party/googletest/googletest/test/gtest_test_utils.py:144
gtest_test_utils.GetTestExecutablePath
def GetTestExecutablePath(executable_name, build_dir=None)
Definition: bloaty/third_party/googletest/googletest/test/gtest_test_utils.py:151
gtest_json_test_utils.normalize
def normalize(obj)
Definition: bloaty/third_party/googletest/googletest/test/gtest_json_test_utils.py:35
googletest-json-output-unittest.GTestJsonOutputUnitTest.testDefaultOutputFile
def testDefaultOutputFile(self)
Definition: bloaty/third_party/googletest/googletest/test/googletest-json-output-unittest.py:655
googletest-json-output-unittest.GTestJsonOutputUnitTest.testNonEmptyJsonOutput
def testNonEmptyJsonOutput(self)
Definition: bloaty/third_party/googletest/googletest/test/googletest-json-output-unittest.py:614
googletest-json-output-unittest.GTestJsonOutputUnitTest
Definition: bloaty/third_party/googletest/googletest/test/googletest-json-output-unittest.py:606
googletest-json-output-unittest.GTestJsonOutputUnitTest.testEmptyJsonOutput
def testEmptyJsonOutput(self)
Definition: bloaty/third_party/googletest/googletest/test/googletest-json-output-unittest.py:622
googletest-json-output-unittest.GTestJsonOutputUnitTest.testTimestampValue
def testTimestampValue(self)
Definition: bloaty/third_party/googletest/googletest/test/googletest-json-output-unittest.py:631
open
#define open
Definition: test-fs.c:46
gtest_test_utils.Main
def Main()
Definition: bloaty/third_party/googletest/googletest/test/gtest_test_utils.py:301
gtest_test_utils.TestCase
TestCase
Definition: bloaty/third_party/googletest/googletest/test/gtest_test_utils.py:74


grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:40