summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWalter Doerwald <walter@livinglogic.de>2012-01-29 11:49:02 +0100
committerWalter Doerwald <walter@livinglogic.de>2012-01-29 11:49:02 +0100
commit41ee92c664b1be298fb98d74ca4aed59a6dda513 (patch)
treeab1dc2856c1a770f7104f308d1a4b7f7299be23f
parent53c2c6c82a05259298b0f5c7ac9e96f96621d004 (diff)
downloadpython-lxml-41ee92c664b1be298fb98d74ca4aed59a6dda513.tar.gz
Add tests for the DTD attributes name, systemID and externalID.
-rw-r--r--src/lxml/tests/test_dtd.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/lxml/tests/test_dtd.py b/src/lxml/tests/test_dtd.py
index 976b62b9..653f4964 100644
--- a/src/lxml/tests/test_dtd.py
+++ b/src/lxml/tests/test_dtd.py
@@ -129,6 +129,10 @@ class ETreeDtdTestCase(HelperTestCase):
def test_dtd_attrs(self):
dtd = etree.DTD(fileInTestDir("test.dtd"))
+ # Test systemID attribute
+ self.assert_(dtd.systemID.endswith("test.dtd"))
+
+ # Test elements and their attributes
a = dtd.elements()[0]
self.assertEqual(a.name, "a")
self.assertEqual(a.type, "element")
@@ -147,11 +151,31 @@ class ETreeDtdTestCase(HelperTestCase):
self.assertEqual(b.type, "empty")
self.assertEqual(b.content, None)
+ # Test entities and their attributes
c = dtd.entities()[0]
self.assertEqual(c.name, "c")
self.assertEqual(c.orig, "&#42;")
self.assertEqual(c.content, "*")
+ # Test name and systemID attributes
+ root = etree.XML(_bytes('''
+ <!DOCTYPE a SYSTEM "none" [
+ <!ELEMENT a EMPTY>
+ ]>
+ <a/>
+ '''))
+ dtd = etree.ElementTree(root).docinfo.internalDTD
+ self.assertEqual(dtd.name, "a")
+
+ parser = etree.XMLParser(dtd_validation=True)
+ xml = '<!DOCTYPE a SYSTEM "test.dtd"><a><b/></a>'
+ root = etree.fromstring(xml, parser=parser,
+ base_url=fileInTestDir("test.xml"))
+
+ dtd = root.getroottree().docinfo.internalDTD
+ self.assertEqual(dtd.name, "a")
+ self.assertEqual(dtd.systemID, "test.dtd")
+
def test_suite():
suite = unittest.TestSuite()