From ab7ed77ab3560f6d574d577befc7a1f593e45327 Mon Sep 17 00:00:00 2001 From: Leonard Richardson Date: Mon, 20 Feb 2012 11:43:46 -0500 Subject: Changd the class structure so that the default parser test class uses html.parser. --- bs4/tests/test_tree.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'bs4/tests/test_tree.py') diff --git a/bs4/tests/test_tree.py b/bs4/tests/test_tree.py index 70a7da1..5d5ca9a 100644 --- a/bs4/tests/test_tree.py +++ b/bs4/tests/test_tree.py @@ -16,7 +16,13 @@ import warnings from bs4 import BeautifulSoup from bs4.builder import builder_registry from bs4.element import CData, NavigableString, SoupStrainer, Tag -from bs4.testing import SoupTest +from bs4.testing import ( + SoupTest, + skipIf, +) + +XML_BUILDER_PRESENT = (builder_registry.lookup("xml") is not None) + class TreeTest(SoupTest): @@ -600,14 +606,15 @@ class TestTagCreation(SoupTest): self.assertEqual(None, new_tag.parent) def test_tag_inherits_self_closing_rules_from_builder(self): - xml_soup = BeautifulSoup("", "xml") - xml_br = xml_soup.new_tag("br") - xml_p = xml_soup.new_tag("p") + if XML_BUILDER_PRESENT: + xml_soup = BeautifulSoup("", "xml") + xml_br = xml_soup.new_tag("br") + xml_p = xml_soup.new_tag("p") - # Both the
and

tag are empty-element, just because - # they have no contents. - self.assertEqual(b"
", xml_br.encode()) - self.assertEqual(b"

", xml_p.encode()) + # Both the
and

tag are empty-element, just because + # they have no contents. + self.assertEqual(b"
", xml_br.encode()) + self.assertEqual(b"

", xml_p.encode()) html_soup = BeautifulSoup("", "html") html_br = html_soup.new_tag("br") @@ -1000,10 +1007,6 @@ class TestElementObjects(SoupTest): markup = '' self.assertSoupEquals(markup, '') - def test_multiple_values_for_the_same_attribute_are_collapsed(self): - markup = '' - self.assertSoupEquals(markup, '') - def test_string(self): # A tag that contains only a text node makes that node # available as .string. -- cgit v1.2.3 From 614baaff5871c95afcfbfee431b0ef0b23123721 Mon Sep 17 00:00:00 2001 From: Leonard Richardson Date: Mon, 20 Feb 2012 12:40:35 -0500 Subject: Temporarily skip the deepcopy test when lxml is not installed. --- bs4/tests/test_tree.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'bs4/tests/test_tree.py') diff --git a/bs4/tests/test_tree.py b/bs4/tests/test_tree.py index 5d5ca9a..d6d8dcb 100644 --- a/bs4/tests/test_tree.py +++ b/bs4/tests/test_tree.py @@ -14,7 +14,10 @@ import pickle import re import warnings from bs4 import BeautifulSoup -from bs4.builder import builder_registry +from bs4.builder import ( + builder_registry, + HTMLParserTreeBuilder, +) from bs4.element import CData, NavigableString, SoupStrainer, Tag from bs4.testing import ( SoupTest, @@ -22,7 +25,7 @@ from bs4.testing import ( ) XML_BUILDER_PRESENT = (builder_registry.lookup("xml") is not None) - +LXML_PRESENT = (builder_registry.lookup("lxml") is not None) class TreeTest(SoupTest): @@ -1119,6 +1122,8 @@ class TestPersistence(SoupTest): self.assertEqual(loaded.__class__, BeautifulSoup) self.assertEqual(loaded.decode(), self.tree.decode()) + @skipIf(not LXML_PRESENT, + "Skipping deepcopy test to work around htmlparser bug.") def test_deepcopy_identity(self): # Making a deepcopy of a tree yields an identical tree. copied = copy.deepcopy(self.tree) -- cgit v1.2.3 From 60cb51632dce022d1a4aff18500d286e58e0bd5c Mon Sep 17 00:00:00 2001 From: Leonard Richardson Date: Mon, 20 Feb 2012 14:05:38 -0500 Subject: It's now possible to copy a BeautifulSoup object created with the html.parser treebuilder. --- bs4/tests/test_tree.py | 2 -- 1 file changed, 2 deletions(-) (limited to 'bs4/tests/test_tree.py') diff --git a/bs4/tests/test_tree.py b/bs4/tests/test_tree.py index d6d8dcb..f39826a 100644 --- a/bs4/tests/test_tree.py +++ b/bs4/tests/test_tree.py @@ -1122,8 +1122,6 @@ class TestPersistence(SoupTest): self.assertEqual(loaded.__class__, BeautifulSoup) self.assertEqual(loaded.decode(), self.tree.decode()) - @skipIf(not LXML_PRESENT, - "Skipping deepcopy test to work around htmlparser bug.") def test_deepcopy_identity(self): # Making a deepcopy of a tree yields an identical tree. copied = copy.deepcopy(self.tree) -- cgit v1.2.3