diff options
Diffstat (limited to 'tests/test_lxml.py')
-rw-r--r-- | tests/test_lxml.py | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/tests/test_lxml.py b/tests/test_lxml.py index 8f36b41..9f002cb 100644 --- a/tests/test_lxml.py +++ b/tests/test_lxml.py @@ -4,7 +4,7 @@ import re from beautifulsoup import BeautifulSoup from beautifulsoup.builder.lxml_builder import LXMLTreeBuilder -from beautifulsoup.element import Comment +from beautifulsoup.element import Comment, Doctype from beautifulsoup.testing import SoupTest @@ -201,11 +201,33 @@ class TestLXMLBuilder(SoupTest): markup = "<svg><![CDATA[foobar]]>" self.assertSoupEquals(markup, "<svg></svg>") + def test_namespaced_system_doctype(self): + doctype_str = '<!DOCTYPE xsl:stylesheet SYSTEM "htmlent.dtd">' + markup = doctype_str + '<p>foo</p>' + soup = BeautifulSoup(markup) + doctype = soup.contents[0] + self.assertEquals(doctype.__class__, Doctype) + self.assertEquals(doctype, 'xsl:stylesheet SYSTEM "htmlent.dtd"') + self.assertEquals(str(soup)[:len(doctype_str)], doctype_str) + self.assertEquals(soup.p.contents[0], 'foo') + + def test_namespaced_public_doctype(self): + doctype_str = '<!DOCTYPE xsl:stylesheet PUBLIC "htmlent.dtd">' + markup = doctype_str + '<p>foo</p>' + soup = BeautifulSoup(markup) + doctype = soup.contents[0] + self.assertEquals(doctype.__class__, Doctype) + self.assertEquals(doctype, 'xsl:stylesheet PUBLIC "htmlent.dtd"') + self.assertEquals(str(soup)[:len(doctype_str)], doctype_str) + self.assertEquals(soup.p.contents[0], 'foo') + # Tests below this line need work. - #def test_doctype(self): - # xml = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"><html>foo</html></p>' - # self.assertSoupEquals(xml) + + def test_doctype(self): + doctype_str = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"> + markup = doctype_str + '<p>foo</p>' + self.assertSoupEquals(xml) def test_entities_converted_on_the_way_out(self): text = "<p><<sacré bleu!>></p>" @@ -274,6 +296,9 @@ class TestLXMLBuilderInvalidMarkup(SoupTest): markup = "<p>one<!DOCTYPE foobar>two</p>" self.assertSoupEquals(markup) + #def testJunkInDeclaration(self): + # self.assertSoupEquals('<! Foo = -8>a', '<!Foo = -8>a') + def test_cdata_where_it_doesnt_belong(self): #CDATA sections are ignored. markup = "<div><![CDATA[foo]]>" |