From: Vladimir Surjaninov Date: Wed, 27 Mar 2019 05:58:49 +0000 (+0300) Subject: bpo-36407: Fix writing indentations of CDATA section (xml.dom.minidom). (GH-12514) X-Git-Tag: v3.8.0a4~327 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=384b81d923addd52125e94470b11d2574ca266a9;p=thirdparty%2FPython%2Fcpython.git bpo-36407: Fix writing indentations of CDATA section (xml.dom.minidom). (GH-12514) --- diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py index f3ef958b5353..70965854ed1b 100644 --- a/Lib/test/test_minidom.py +++ b/Lib/test/test_minidom.py @@ -1631,5 +1631,21 @@ class MinidomTest(unittest.TestCase): '\n' '\n') + def test_toprettyxml_with_cdata(self): + xml_str = ']]>' + doc = parseString(xml_str) + self.assertEqual(doc.toprettyxml(), + '\n' + '\n' + '\t]]>\n' + '\n') + + def test_cdata_parsing(self): + xml_str = ']]>' + dom1 = parseString(xml_str) + self.checkWholeText(dom1.getElementsByTagName('node')[0].firstChild, '') + dom2 = parseString(dom1.toprettyxml()) + self.checkWholeText(dom2.getElementsByTagName('node')[0].firstChild, '') + if __name__ == "__main__": unittest.main() diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py index 43569ddcbeac..464420b76598 100644 --- a/Lib/xml/dom/minidom.py +++ b/Lib/xml/dom/minidom.py @@ -862,7 +862,8 @@ class Element(Node): if self.childNodes: writer.write(">") if (len(self.childNodes) == 1 and - self.childNodes[0].nodeType == Node.TEXT_NODE): + self.childNodes[0].nodeType in ( + Node.TEXT_NODE, Node.CDATA_SECTION_NODE)): self.childNodes[0].writexml(writer, '', '', '') else: writer.write(newl) diff --git a/Misc/NEWS.d/next/Library/2019-03-23-17-16-15.bpo-36407.LG3aC4.rst b/Misc/NEWS.d/next/Library/2019-03-23-17-16-15.bpo-36407.LG3aC4.rst new file mode 100644 index 000000000000..3873329a51e1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-03-23-17-16-15.bpo-36407.LG3aC4.rst @@ -0,0 +1,2 @@ +Fixed wrong indentation writing for CDATA section in xml.dom.minidom. +Patch by Vladimir Surjaninov.