"""Tests to ensure that the html5lib tree builder generates good trees."""
try:
from bs4.builder import HTML5TreeBuilder
HTML5LIB_PRESENT = True
except ImportError, e:
HTML5LIB_PRESENT = False
from bs4.element import SoupStrainer
from bs4.testing import (
HTMLTreeBuilderSmokeTest,
SoupTest,
skipIf,
)
@skipIf(
not HTML5LIB_PRESENT,
"html5lib seems not to be present, not testing its tree builder.")
class HTML5LibBuilderSmokeTest(SoupTest, HTMLTreeBuilderSmokeTest):
"""See ``HTMLTreeBuilderSmokeTest``."""
@property
def default_builder(self):
return HTML5TreeBuilder()
def test_soupstrainer(self):
# The html5lib tree builder does not support SoupStrainers.
strainer = SoupStrainer("b")
markup = "
A bold statement.
"
soup = self.soup(markup,
parse_only=strainer)
self.assertEqual(
soup.decode(), self.document_for(markup))
def test_correctly_nested_tables(self):
"""html5lib inserts tags where other parsers don't."""
markup = (''
''
"Here's another table:"
' | ')
self.assertSoupEquals(
markup,
'Here\'s another table:'
''
' |
')
self.assertSoupEquals(
"")