[Python-checkins] cpython (3.4): #12220: improve minidom error when URI contains spaces.

r.david.murray python-checkins at python.org
Sun Apr 20 06:48:41 CEST 2014


http://hg.python.org/cpython/rev/13c1c5e3d2ee
changeset:   90420:13c1c5e3d2ee
branch:      3.4
parent:      90417:1f3946b22e64
user:        R David Murray <rdmurray at bitdance.com>
date:        Sun Apr 20 00:46:05 2014 -0400
summary:
  #12220: improve minidom error when URI contains spaces.

Fix by 'amathew', test by Marek Stepniowski.

files:
  Lib/test/test_minidom.py    |  4 ++++
  Lib/xml/dom/expatbuilder.py |  4 +++-
  Misc/ACKS                   |  1 +
  Misc/NEWS                   |  3 +++
  4 files changed, 11 insertions(+), 1 deletions(-)


diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py
--- a/Lib/test/test_minidom.py
+++ b/Lib/test/test_minidom.py
@@ -1518,6 +1518,10 @@
         doc2 = parseString(doc.toxml())
         self.confirm(doc2.namespaceURI == xml.dom.EMPTY_NAMESPACE)
 
+    def testExceptionOnSpacesInXMLNSValue(self):
+        with self.assertRaisesRegex(ValueError, 'Unsupported syntax'):
+            parseString('<element xmlns:abc="http:abc.com/de f g/hi/j k"><abc:foo /></element>')
+
     def testDocRemoveChild(self):
         doc = parse(tstfile)
         title_tag = doc.documentElement.getElementsByTagName("TITLE")[0]
diff --git a/Lib/xml/dom/expatbuilder.py b/Lib/xml/dom/expatbuilder.py
--- a/Lib/xml/dom/expatbuilder.py
+++ b/Lib/xml/dom/expatbuilder.py
@@ -121,10 +121,12 @@
         qname = "%s:%s" % (prefix, localname)
         qname = intern(qname, qname)
         localname = intern(localname, localname)
-    else:
+    elif len(parts) == 2:
         uri, localname = parts
         prefix = EMPTY_PREFIX
         qname = localname = intern(localname, localname)
+    else:
+        raise ValueError("Unsupported syntax: spaces in URIs not supported: %r" % name)
     return intern(uri, uri), localname, prefix, qname
 
 
diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1255,6 +1255,7 @@
 Anthony Starks
 Oliver Steele
 Greg Stein
+Marek Stepniowski
 Baruch Sterin
 Chris Stern
 Alex Stewart
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -39,6 +39,9 @@
 Library
 -------
 
+- Issue #12220: mindom now raises a custom ValueError indicating it doesn't
+  support spaces in URIs instead of letting a 'split' ValueError bubble up.
+
 - Issue #21239: patch.stopall() didn't work deterministically when the same
   name was patched more than once.
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list