Commit 6b0a836c authored by Claude Paroz's avatar Claude Paroz
Browse files

Fixed assertXMLEqual when first node was a comment

parent 1636b033
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -227,9 +227,10 @@ class override_settings(object):


def compare_xml(want, got):
    """Tries to do a 'xml-comparision' of want and got.  Plain string
    comparision doesn't always work because, for example, attribute
    ordering should not be important.
    """Tries to do a 'xml-comparison' of want and got.  Plain string
    comparison doesn't always work because, for example, attribute
    ordering should not be important. Comment nodes are not considered in the
    comparison.

    Based on http://codespeak.net/svn/lxml/trunk/src/lxml/doctestcompare.py
    """
@@ -267,6 +268,11 @@ def compare_xml(want, got):
                return False
        return True

    def first_node(document):
        for node in document.childNodes:
            if node.nodeType != Node.COMMENT_NODE:
                return node

    want, got = strip_quotes(want, got)
    want = want.replace('\\n','\n')
    got = got.replace('\\n','\n')
@@ -279,8 +285,8 @@ def compare_xml(want, got):
        got = wrapper % got

    # Parse the want and got strings, and compare the parsings.
    want_root = parseString(want).firstChild
    got_root = parseString(got).firstChild
    want_root = first_node(parseString(want))
    got_root = first_node(parseString(got))

    return check_element(want_root, got_root)

+5 −0
Original line number Diff line number Diff line
@@ -484,6 +484,11 @@ class XMLEqualTests(TestCase):
        with self.assertRaises(AssertionError):
            self.assertXMLNotEqual(xml_unvalid, xml2)

    def test_comment_root(self):
        xml1 = "<?xml version='1.0'?><!-- comment1 --><elem attr1='a' attr2='b' />"
        xml2 = "<?xml version='1.0'?><!-- comment2 --><elem attr2='b' attr1='a' />"
        self.assertXMLEqual(xml1, xml2)


class SkippingExtraTests(TestCase):
    fixtures = ['should_not_be_loaded.json']