diff options
author | Leonard Richardson <leonard.richardson@canonical.com> | 2011-02-20 10:39:30 -0500 |
---|---|---|
committer | Leonard Richardson <leonard.richardson@canonical.com> | 2011-02-20 10:39:30 -0500 |
commit | f2532b1d63bd4a4d2be6ad9a4dce5eea03f43e7a (patch) | |
tree | 60bd21949b54bdb5588ecce31a3bb89e40617692 /tests | |
parent | b3ba2b97b2d4c4e5559baadc96f1844753b38df4 (diff) |
Since we can't parse in CData objects ATM, added a test for CData objects created manually, to keep the bits from rotting.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_lxml.py | 11 | ||||
-rw-r--r-- | tests/test_tree.py | 16 |
2 files changed, 22 insertions, 5 deletions
diff --git a/tests/test_lxml.py b/tests/test_lxml.py index c178457..88c866d 100644 --- a/tests/test_lxml.py +++ b/tests/test_lxml.py @@ -518,6 +518,17 @@ class TestLXMLXMLBuilder(SoupTest): def default_builder(self): return LXMLTreeBuilderForXML() + def test_cdata_becomes_text(self): + # LXML sends CData sections as 'data' events, so we can't + # create special CData objects for them. We have to use + # NavigableString. I would like to fix this, but it's not a + # very high priority. + markup = "<foo><![CDATA[iamcdata]]></foo>" + soup = self.soup(markup) + cdata = soup.foo.contents[0] + self.assertEquals(cdata.__class__.__name__, 'NavigableString') + + def test_can_handle_invalid_xml(self): self.assertSoupEquals("<a><b>", "<a><b /></a>") diff --git a/tests/test_tree.py b/tests/test_tree.py index 40643dc..6f00716 100644 --- a/tests/test_tree.py +++ b/tests/test_tree.py @@ -13,7 +13,7 @@ import copy import cPickle as pickle import re from beautifulsoup import BeautifulSoup -from beautifulsoup.element import SoupStrainer, Tag +from beautifulsoup.element import CData, SoupStrainer, Tag from beautifulsoup.testing import SoupTest class TreeTest(SoupTest): @@ -883,9 +883,15 @@ class TestEncoding(SoupTest): soup.b.encode("utf-8"), html.encode("utf-8")) -class TestEmptyElementTags(SoupTest): +class TestNavigableStringSubclasses(SoupTest): - @property - def default_builder(self): - return LXMLTreeBuilderForXML() + def test_cdata(self): + # None of the current builders turn CDATA sections into CData + # objects, but you can create them manually. + soup = self.soup("") + cdata = CData("foo") + soup.insert(1, cdata) + self.assertEquals(str(soup), "<![CDATA[foo]]>") + self.assertEquals(soup.find(text="foo"), "foo") + self.assertEquals(soup.contents[0], "foo") |