googletest/googletest/test/gtest_xml_outfiles_test.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 #
3 # Copyright 2008, Google Inc.
4 # All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions are
8 # met:
9 #
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
15 # distribution.
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.
19 #
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 
32 """Unit test for the gtest_xml_output module."""
33 
34 import os
35 from xml.dom import minidom, Node
36 from googletest.test import gtest_test_utils
37 from googletest.test import gtest_xml_test_utils
38 
39 GTEST_OUTPUT_SUBDIR = "xml_outfiles"
40 GTEST_OUTPUT_1_TEST = "gtest_xml_outfile1_test_"
41 GTEST_OUTPUT_2_TEST = "gtest_xml_outfile2_test_"
42 
43 EXPECTED_XML_1 = """<?xml version="1.0" encoding="UTF-8"?>
44 <testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
45  <testsuite name="PropertyOne" tests="1" failures="0" skipped="0" disabled="0" errors="0" time="*" timestamp="*">
46  <testcase name="TestSomeProperties" status="run" result="completed" time="*" timestamp="*" classname="PropertyOne">
47  <properties>
48  <property name="SetUpProp" value="1"/>
49  <property name="TestSomeProperty" value="1"/>
50  <property name="TearDownProp" value="1"/>
51  </properties>
52  </testcase>
53  </testsuite>
54 </testsuites>
55 """
56 
57 EXPECTED_XML_2 = """<?xml version="1.0" encoding="UTF-8"?>
58 <testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
59  <testsuite name="PropertyTwo" tests="1" failures="0" skipped="0" disabled="0" errors="0" time="*" timestamp="*">
60  <testcase name="TestSomeProperties" status="run" result="completed" time="*" timestamp="*" classname="PropertyTwo">
61  <properties>
62  <property name="SetUpProp" value="2"/>
63  <property name="TestSomeProperty" value="2"/>
64  <property name="TearDownProp" value="2"/>
65  </properties>
66  </testcase>
67  </testsuite>
68 </testsuites>
69 """
70 
71 
72 class GTestXMLOutFilesTest(gtest_xml_test_utils.GTestXMLTestCase):
73  """Unit test for Google Test's XML output functionality."""
74 
75  def setUp(self):
76  # We want the trailing '/' that the last "" provides in os.path.join, for
77  # telling Google Test to create an output directory instead of a single file
78  # for xml output.
79  self.output_dir_ = os.path.join(gtest_test_utils.GetTempDir(),
80  GTEST_OUTPUT_SUBDIR, "")
81  self.DeleteFilesAndDir()
82 
83  def tearDown(self):
84  self.DeleteFilesAndDir()
85 
86  def DeleteFilesAndDir(self):
87  try:
88  os.remove(os.path.join(self.output_dir_, GTEST_OUTPUT_1_TEST + ".xml"))
89  except os.error:
90  pass
91  try:
92  os.remove(os.path.join(self.output_dir_, GTEST_OUTPUT_2_TEST + ".xml"))
93  except os.error:
94  pass
95  try:
96  os.rmdir(self.output_dir_)
97  except os.error:
98  pass
99 
100  def testOutfile1(self):
101  self._TestOutFile(GTEST_OUTPUT_1_TEST, EXPECTED_XML_1)
102 
103  def testOutfile2(self):
104  self._TestOutFile(GTEST_OUTPUT_2_TEST, EXPECTED_XML_2)
105 
106  def _TestOutFile(self, test_name, expected_xml):
107  gtest_prog_path = gtest_test_utils.GetTestExecutablePath(test_name)
108  command = [gtest_prog_path, "--gtest_output=xml:%s" % self.output_dir_]
109  p = gtest_test_utils.Subprocess(command,
110  working_dir=gtest_test_utils.GetTempDir())
111  self.assert_(p.exited)
112  self.assertEquals(0, p.exit_code)
113 
114  output_file_name1 = test_name + ".xml"
115  output_file1 = os.path.join(self.output_dir_, output_file_name1)
116  output_file_name2 = 'lt-' + output_file_name1
117  output_file2 = os.path.join(self.output_dir_, output_file_name2)
118  self.assert_(os.path.isfile(output_file1) or os.path.isfile(output_file2),
119  output_file1)
120 
121  expected = minidom.parseString(expected_xml)
122  if os.path.isfile(output_file1):
123  actual = minidom.parse(output_file1)
124  else:
125  actual = minidom.parse(output_file2)
126  self.NormalizeXml(actual.documentElement)
127  self.AssertEquivalentNodes(expected.documentElement,
128  actual.documentElement)
129  expected.unlink()
130  actual.unlink()
131 
132 
133 if __name__ == "__main__":
134  os.environ["GTEST_STACK_TRACE_DEPTH"] = "0"
gtest_xml_outfiles_test.GTestXMLOutFilesTest.testOutfile1
def testOutfile1(self)
Definition: bloaty/third_party/googletest/googletest/test/gtest_xml_outfiles_test.py:100
gtest_test_utils.Subprocess
Definition: bloaty/third_party/googletest/googletest/test/gtest_test_utils.py:202
gtest_xml_outfiles_test.GTestXMLOutFilesTest.setUp
def setUp(self)
Definition: bloaty/third_party/googletest/googletest/test/gtest_xml_outfiles_test.py:75
gtest_xml_test_utils.GTestXMLTestCase.AssertEquivalentNodes
def AssertEquivalentNodes(self, expected_node, actual_node)
Definition: bloaty/third_party/googletest/googletest/test/gtest_xml_test_utils.py:44
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_xml_outfiles_test.GTestXMLOutFilesTest._TestOutFile
def _TestOutFile(self, test_name, expected_xml)
Definition: bloaty/third_party/googletest/googletest/test/gtest_xml_outfiles_test.py:106
gtest_xml_test_utils.GTestXMLTestCase.NormalizeXml
def NormalizeXml(self, element)
Definition: bloaty/third_party/googletest/googletest/test/gtest_xml_test_utils.py:152
gtest_xml_outfiles_test.GTestXMLOutFilesTest.DeleteFilesAndDir
def DeleteFilesAndDir(self)
Definition: bloaty/third_party/googletest/googletest/test/gtest_xml_outfiles_test.py:86
gtest_xml_outfiles_test.GTestXMLOutFilesTest.output_dir_
output_dir_
Definition: bloaty/third_party/googletest/googletest/test/gtest_xml_outfiles_test.py:79
gtest_xml_outfiles_test.GTestXMLOutFilesTest.tearDown
def tearDown(self)
Definition: bloaty/third_party/googletest/googletest/test/gtest_xml_outfiles_test.py:83
gtest_xml_test_utils.GTestXMLTestCase
Definition: bloaty/third_party/googletest/googletest/test/gtest_xml_test_utils.py:38
gtest_test_utils.Main
def Main()
Definition: bloaty/third_party/googletest/googletest/test/gtest_test_utils.py:301
gtest_xml_outfiles_test.GTestXMLOutFilesTest.testOutfile2
def testOutfile2(self)
Definition: bloaty/third_party/googletest/googletest/test/gtest_xml_outfiles_test.py:103


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