diff options
author | Leonard Richardson <leonard.richardson@canonical.com> | 2009-04-10 15:20:58 -0400 |
---|---|---|
committer | Leonard Richardson <leonard.richardson@canonical.com> | 2009-04-10 15:20:58 -0400 |
commit | 522c72ef59e2b544a30a6bfbc3001dc1e84fed45 (patch) | |
tree | 32f1d105d930207d2dd9b822e4051e2cb8f987d6 | |
parent | 07874f2172a7402306582ba9c5f5ceb92f0f5f44 (diff) |
Added a simple compatibility test suite for tree builders.
-rw-r--r-- | src/beautifulsoup/builder/lxml_builder.py (renamed from lxml_builder.py) | 3 | ||||
-rw-r--r-- | src/beautifulsoup/tests/test_lxml.py | 6 | ||||
-rw-r--r-- | src/beautifulsoup/tests/treebuilder.py | 30 |
3 files changed, 38 insertions, 1 deletions
diff --git a/lxml_builder.py b/src/beautifulsoup/builder/lxml_builder.py index 9929918..2963a02 100644 --- a/lxml_builder.py +++ b/src/beautifulsoup/builder/lxml_builder.py @@ -1,5 +1,6 @@ from lxml import etree -from BeautifulSoup import TreeBuilder, Comment +from beautifulsoup.element import Comment +from beautifulsoup.builder import TreeBuilder class LXMLTreeBuilder(TreeBuilder): diff --git a/src/beautifulsoup/tests/test_lxml.py b/src/beautifulsoup/tests/test_lxml.py new file mode 100644 index 0000000..5211301 --- /dev/null +++ b/src/beautifulsoup/tests/test_lxml.py @@ -0,0 +1,6 @@ +from treebuilder import CompatibilityTest +from beautifulsoup.builder.lxml_builder import LXMLTreeBuilder +import unittest + +def additional_tests(): + return unittest.TestSuite([CompatibilityTest(LXMLTreeBuilder())]) diff --git a/src/beautifulsoup/tests/treebuilder.py b/src/beautifulsoup/tests/treebuilder.py new file mode 100644 index 0000000..25be325 --- /dev/null +++ b/src/beautifulsoup/tests/treebuilder.py @@ -0,0 +1,30 @@ +"""Tree builder compatibility suite. + +If you create a tree builder class, also create a test suite that +subclasses this one. This test suite will parse various bits of +well-formed HTML with your tree builder. Not every tree builder will +handle bad HTML in the same way, but every builder should be able to +handle _good_ HTML in the same way. +""" + +import unittest +from beautifulsoup import BeautifulSoup +from test_soup import SoupTest + +class CompatibilityTest(SoupTest): + + def __init__(self, builder): + self.builder = builder + + _testMethodName = "test" + + def test(self): + self.test_bare_string() + self.test_tag_nesting() + + def test_bare_string(self): + self.assertSoupEquals("A bare string") + + def test_tag_nesting(self): + self.assertSoupEquals("<b>Inside a B tag</b>") + self.assertSoupEquals("<p>A <i>nested <b>tag</b></i></p>") |