[Lxml-checkins] r44883 - in lxml/trunk: . src/lxml src/lxml/tests
scoder at codespeak.net
scoder at codespeak.net
Mon Jul 9 22:13:49 CEST 2007
Author: scoder
Date: Mon Jul 9 22:13:48 2007
New Revision: 44883
Modified:
lxml/trunk/CHANGES.txt
lxml/trunk/src/lxml/apihelpers.pxi
lxml/trunk/src/lxml/tests/test_etree.py
Log:
raise ValueError tag names containing ':'
Modified: lxml/trunk/CHANGES.txt
==============================================================================
--- lxml/trunk/CHANGES.txt (original)
+++ lxml/trunk/CHANGES.txt Mon Jul 9 22:13:48 2007
@@ -34,6 +34,8 @@
Bugs fixed
----------
+* ``Element()`` did not raise an exception on tag names containing ':'
+
* The XML parser did not report undefined entities as error
* The text in exceptions raised by XML parsers, validators and XPath
Modified: lxml/trunk/src/lxml/apihelpers.pxi
==============================================================================
--- lxml/trunk/src/lxml/apihelpers.pxi (original)
+++ lxml/trunk/src/lxml/apihelpers.pxi Mon Jul 9 22:13:48 2007
@@ -708,6 +708,8 @@
c_ns_end = cstd.strchr(c_tag, c'}')
if c_ns_end is NULL:
raise ValueError, "Invalid tag name"
+ if cstd.strchr(c_ns_end, c':') is not NULL:
+ raise ValueError, "Invalid tag name"
nslen = c_ns_end - c_tag
taglen = python.PyString_GET_SIZE(tag) - nslen - 2
if taglen == 0:
@@ -717,6 +719,8 @@
tag = python.PyString_FromStringAndSize(c_ns_end+1, taglen)
elif python.PyString_GET_SIZE(tag) == 0:
raise ValueError, "Empty tag name"
+ elif cstd.strchr(c_tag, c':') is not NULL:
+ raise ValueError, "Invalid tag name"
return ns, tag
cdef object _namespacedName(xmlNode* c_node):
Modified: lxml/trunk/src/lxml/tests/test_etree.py
==============================================================================
--- lxml/trunk/src/lxml/tests/test_etree.py (original)
+++ lxml/trunk/src/lxml/tests/test_etree.py Mon Jul 9 22:13:48 2007
@@ -52,14 +52,27 @@
def test_element_names(self):
Element = self.etree.Element
-
el = Element('name')
self.assertEquals(el.tag, 'name')
el = Element('{}name')
self.assertEquals(el.tag, 'name')
+
+ def test_element_name_empty(self):
+ Element = self.etree.Element
+ el = Element('name')
+ self.assertRaises(ValueError, Element, '{}')
+ self.assertRaises(ValueError, setattr, el, 'tag', '{}')
+
self.assertRaises(ValueError, Element, '{test}')
self.assertRaises(ValueError, setattr, el, 'tag', '{test}')
+ def test_element_name_colon(self):
+ Element = self.etree.Element
+ self.assertRaises(ValueError, Element, 'p:name')
+
+ el = Element('name')
+ self.assertRaises(ValueError, setattr, el, 'tag', 'p:name')
+
def test_attribute_set(self):
# ElementTree accepts arbitrary attribute values
# lxml.etree allows only strings
More information about the lxml-checkins
mailing list