|
15 | 15 |
|
16 | 16 | from html5lib import html5parser, treewalkers |
17 | 17 | from html5lib.filters.lint import Filter as Lint |
| 18 | +from html5lib.serializer import HTMLSerializer |
18 | 19 |
|
19 | 20 | import re |
20 | 21 | attrlist = re.compile(r"^(\s+)\w+=.*(\n\1\w+=.*)+", re.M) |
@@ -123,6 +124,28 @@ def test_fragment_single_char(tree, char): |
123 | 124 | assert list(output) == expected |
124 | 125 |
|
125 | 126 |
|
| 127 | +@pytest.mark.parametrize("tree,intext", |
| 128 | + itertools.product(sorted(treeTypes.items()), |
| 129 | + ["", "<!doctype html>"])) |
| 130 | +def test_fragment_empty(tree, intext): |
| 131 | + treeName, treeClass = tree |
| 132 | + if treeClass is None: |
| 133 | + pytest.skip("Treebuilder not loaded") |
| 134 | + |
| 135 | + parser = html5parser.HTMLParser(tree=treeClass["builder"]) |
| 136 | + document = parser.parseFragment(intext) |
| 137 | + document = treeClass.get("adapter", lambda x: x)(document) |
| 138 | + |
| 139 | + assert list(Lint(treeClass["walker"](document))) == [] |
| 140 | + assert "".join(HTMLSerializer().serialize(treeClass["walker"](document))) == "" |
| 141 | + |
| 142 | + |
| 143 | +@pytest.mark.skipif(treeTypes["lxml"] is None, reason="lxml not importable") |
| 144 | +def test_lxml_empty_list(): |
| 145 | + walker = treewalkers.getTreeWalker('lxml') |
| 146 | + assert list(Lint(walker([]))) == [] |
| 147 | + |
| 148 | + |
126 | 149 | @pytest.mark.skipif(treeTypes["lxml"] is None, reason="lxml not importable") |
127 | 150 | def test_lxml_xml(): |
128 | 151 | expected = [ |
|
0 commit comments