[Lxml-checkins] r43426 - in lxml/trunk: . src/lxml src/lxml/tests

scoder at codespeak.net scoder at codespeak.net
Wed May 16 10:17:26 CEST 2007


Author: scoder
Date: Wed May 16 10:17:25 2007
New Revision: 43426

Modified:
   lxml/trunk/CHANGES.txt
   lxml/trunk/src/lxml/extensions.pxi
   lxml/trunk/src/lxml/tests/test_xpathevaluator.py
Log:
raise exception when passing empty prefixes or namespaces to XPath

Modified: lxml/trunk/CHANGES.txt
==============================================================================
--- lxml/trunk/CHANGES.txt	(original)
+++ lxml/trunk/CHANGES.txt	Wed May 16 10:17:25 2007
@@ -44,6 +44,8 @@
 Bugs fixed
 ----------
 
+* passing '' as XPath namespace prefix did not raise an error
+
 * passing '' as namespace prefix in nsmap could be passed through to libxml2
 
 * Objectify couldn't handle prefixed XSD type names in ``xsi:type``

Modified: lxml/trunk/src/lxml/extensions.pxi
==============================================================================
--- lxml/trunk/src/lxml/extensions.pxi	(original)
+++ lxml/trunk/src/lxml/extensions.pxi	Wed May 16 10:17:25 2007
@@ -69,10 +69,10 @@
             if namespaces:
                 ns = []
                 for prefix, ns_uri in namespaces:
-                    if prefix is None:
+                    if prefix is None or not prefix:
                         raise TypeError, \
                               "empty namespace prefix is not supported in XPath"
-                    if ns_uri is None:
+                    if ns_uri is None or not ns_uri:
                         raise TypeError, \
                               "setting default namespace is not supported in XPath"
                     prefix_utf = self._to_utf(prefix)

Modified: lxml/trunk/src/lxml/tests/test_xpathevaluator.py
==============================================================================
--- lxml/trunk/src/lxml/tests/test_xpathevaluator.py	(original)
+++ lxml/trunk/src/lxml/tests/test_xpathevaluator.py	Wed May 16 10:17:25 2007
@@ -112,6 +112,13 @@
             TypeError,
             root.xpath, '//b', {None: 'uri:a'})
 
+    def test_xpath_ns_empty(self):
+        tree = self.parse('<a xmlns="uri:a"><b></b></a>')
+        root = tree.getroot()
+        self.assertRaises(
+            TypeError,
+            root.xpath, '//b', {'': 'uri:a'})
+
     def test_xpath_error(self):
         tree = self.parse('<a/>')
         self.assertRaises(etree.XPathEvalError, tree.xpath, '\\fad')


More information about the lxml-checkins mailing list