Index: source/libvpx/third_party/googletest/src/test/gtest_xml_test_utils.py |
=================================================================== |
--- source/libvpx/third_party/googletest/src/test/gtest_xml_test_utils.py (revision 232233) |
+++ source/libvpx/third_party/googletest/src/test/gtest_xml_test_utils.py (working copy) |
@@ -1,179 +0,0 @@ |
-#!/usr/bin/env python |
-# |
-# Copyright 2006, Google Inc. |
-# All rights reserved. |
-# |
-# Redistribution and use in source and binary forms, with or without |
-# modification, are permitted provided that the following conditions are |
-# met: |
-# |
-# * Redistributions of source code must retain the above copyright |
-# notice, this list of conditions and the following disclaimer. |
-# * Redistributions in binary form must reproduce the above |
-# copyright notice, this list of conditions and the following disclaimer |
-# in the documentation and/or other materials provided with the |
-# distribution. |
-# * Neither the name of Google Inc. nor the names of its |
-# contributors may be used to endorse or promote products derived from |
-# this software without specific prior written permission. |
-# |
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- |
-"""Unit test utilities for gtest_xml_output""" |
- |
-__author__ = 'eefacm@gmail.com (Sean Mcafee)' |
- |
-import re |
-from xml.dom import minidom, Node |
- |
-import gtest_test_utils |
- |
- |
-GTEST_OUTPUT_FLAG = "--gtest_output" |
-GTEST_DEFAULT_OUTPUT_FILE = "test_detail.xml" |
- |
-class GTestXMLTestCase(gtest_test_utils.TestCase): |
- """ |
- Base class for tests of Google Test's XML output functionality. |
- """ |
- |
- |
- def AssertEquivalentNodes(self, expected_node, actual_node): |
- """ |
- Asserts that actual_node (a DOM node object) is equivalent to |
- expected_node (another DOM node object), in that either both of |
- them are CDATA nodes and have the same value, or both are DOM |
- elements and actual_node meets all of the following conditions: |
- |
- * It has the same tag name as expected_node. |
- * It has the same set of attributes as expected_node, each with |
- the same value as the corresponding attribute of expected_node. |
- Exceptions are any attribute named "time", which needs only be |
- convertible to a floating-point number and any attribute named |
- "type_param" which only has to be non-empty. |
- * It has an equivalent set of child nodes (including elements and |
- CDATA sections) as expected_node. Note that we ignore the |
- order of the children as they are not guaranteed to be in any |
- particular order. |
- """ |
- |
- if expected_node.nodeType == Node.CDATA_SECTION_NODE: |
- self.assertEquals(Node.CDATA_SECTION_NODE, actual_node.nodeType) |
- self.assertEquals(expected_node.nodeValue, actual_node.nodeValue) |
- return |
- |
- self.assertEquals(Node.ELEMENT_NODE, actual_node.nodeType) |
- self.assertEquals(Node.ELEMENT_NODE, expected_node.nodeType) |
- self.assertEquals(expected_node.tagName, actual_node.tagName) |
- |
- expected_attributes = expected_node.attributes |
- actual_attributes = actual_node .attributes |
- self.assertEquals( |
- expected_attributes.length, actual_attributes.length, |
- "attribute numbers differ in element " + actual_node.tagName) |
- for i in range(expected_attributes.length): |
- expected_attr = expected_attributes.item(i) |
- actual_attr = actual_attributes.get(expected_attr.name) |
- self.assert_( |
- actual_attr is not None, |
- "expected attribute %s not found in element %s" % |
- (expected_attr.name, actual_node.tagName)) |
- self.assertEquals(expected_attr.value, actual_attr.value, |
- " values of attribute %s in element %s differ" % |
- (expected_attr.name, actual_node.tagName)) |
- |
- expected_children = self._GetChildren(expected_node) |
- actual_children = self._GetChildren(actual_node) |
- self.assertEquals( |
- len(expected_children), len(actual_children), |
- "number of child elements differ in element " + actual_node.tagName) |
- for child_id, child in expected_children.iteritems(): |
- self.assert_(child_id in actual_children, |
- '<%s> is not in <%s> (in element %s)' % |
- (child_id, actual_children, actual_node.tagName)) |
- self.AssertEquivalentNodes(child, actual_children[child_id]) |
- |
- identifying_attribute = { |
- "testsuites": "name", |
- "testsuite": "name", |
- "testcase": "name", |
- "failure": "message", |
- } |
- |
- def _GetChildren(self, element): |
- """ |
- Fetches all of the child nodes of element, a DOM Element object. |
- Returns them as the values of a dictionary keyed by the IDs of the |
- children. For <testsuites>, <testsuite> and <testcase> elements, the ID |
- is the value of their "name" attribute; for <failure> elements, it is |
- the value of the "message" attribute; CDATA sections and non-whitespace |
- text nodes are concatenated into a single CDATA section with ID |
- "detail". An exception is raised if any element other than the above |
- four is encountered, if two child elements with the same identifying |
- attributes are encountered, or if any other type of node is encountered. |
- """ |
- |
- children = {} |
- for child in element.childNodes: |
- if child.nodeType == Node.ELEMENT_NODE: |
- self.assert_(child.tagName in self.identifying_attribute, |
- "Encountered unknown element <%s>" % child.tagName) |
- childID = child.getAttribute(self.identifying_attribute[child.tagName]) |
- self.assert_(childID not in children) |
- children[childID] = child |
- elif child.nodeType in [Node.TEXT_NODE, Node.CDATA_SECTION_NODE]: |
- if "detail" not in children: |
- if (child.nodeType == Node.CDATA_SECTION_NODE or |
- not child.nodeValue.isspace()): |
- children["detail"] = child.ownerDocument.createCDATASection( |
- child.nodeValue) |
- else: |
- children["detail"].nodeValue += child.nodeValue |
- else: |
- self.fail("Encountered unexpected node type %d" % child.nodeType) |
- return children |
- |
- def NormalizeXml(self, element): |
- """ |
- Normalizes Google Test's XML output to eliminate references to transient |
- information that may change from run to run. |
- |
- * The "time" attribute of <testsuites>, <testsuite> and <testcase> |
- elements is replaced with a single asterisk, if it contains |
- only digit characters. |
- * The "type_param" attribute of <testcase> elements is replaced with a |
- single asterisk (if it sn non-empty) as it is the type name returned |
- by the compiler and is platform dependent. |
- * The line number reported in the first line of the "message" |
- attribute of <failure> elements is replaced with a single asterisk. |
- * The directory names in file paths are removed. |
- * The stack traces are removed. |
- """ |
- |
- if element.tagName in ("testsuites", "testsuite", "testcase"): |
- time = element.getAttributeNode("time") |
- time.value = re.sub(r"^\d+(\.\d+)?$", "*", time.value) |
- type_param = element.getAttributeNode("type_param") |
- if type_param and type_param.value: |
- type_param.value = "*" |
- elif element.tagName == "failure": |
- for child in element.childNodes: |
- if child.nodeType == Node.CDATA_SECTION_NODE: |
- # Removes the source line number. |
- cdata = re.sub(r"^.*[/\\](.*:)\d+\n", "\\1*\n", child.nodeValue) |
- # Removes the actual stack trace. |
- child.nodeValue = re.sub(r"\nStack trace:\n(.|\n)*", |
- "", cdata) |
- for child in element.childNodes: |
- if child.nodeType == Node.ELEMENT_NODE: |
- self.NormalizeXml(child) |