From e9b5fb78961bd516f993e6da427f400d9083aba3 Mon Sep 17 00:00:00 2001 From: Geoffrey Sneddon Date: Mon, 6 Jun 2016 22:13:53 +0100 Subject: [PATCH 1/2] Fix #132: add test for #115, single character fragments --- html5lib/tests/test_treewalkers.py | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/html5lib/tests/test_treewalkers.py b/html5lib/tests/test_treewalkers.py index 81ed2778..d6470b54 100644 --- a/html5lib/tests/test_treewalkers.py +++ b/html5lib/tests/test_treewalkers.py @@ -100,6 +100,42 @@ def test_treewalker_six_mix(): yield runTreewalkerEditTest, intext, expected, attrs, tree +@pytest.mark.parametrize("tree", sorted(treeTypes.items())) +def test_fragment_single_char(tree): + expected = [ + {'data': 'x', 'type': 'Characters'} + ] + + treeName, treeClass = tree + if treeClass is None: + pytest.skip("Treebuilder not loaded") + + parser = html5parser.HTMLParser(tree=treeClass["builder"]) + document = parser.parseFragment("x") + document = treeClass.get("adapter", lambda x: x)(document) + output = Lint(treeClass["walker"](document)) + + assert list(output) == expected + + +@pytest.mark.parametrize("tree", sorted(treeTypes.items())) +def test_fragment_single_non_ascii_char(tree): + expected = [ + {'data': '\u1234', 'type': 'Characters'} + ] + + treeName, treeClass = tree + if treeClass is None: + pytest.skip("Treebuilder not loaded") + + parser = html5parser.HTMLParser(tree=treeClass["builder"]) + document = parser.parseFragment("\u1234") + document = treeClass.get("adapter", lambda x: x)(document) + output = Lint(treeClass["walker"](document)) + + assert list(output) == expected + + @pytest.mark.skipif(treeTypes["lxml"] is None, reason="lxml not importable") def test_lxml_xml(): expected = [ From 7c0077567957037013ecadc8798edc499c234b84 Mon Sep 17 00:00:00 2001 From: Geoffrey Sneddon Date: Mon, 6 Jun 2016 22:21:32 +0100 Subject: [PATCH 2/2] fixup! Fix #132: add test for #115, single character fragments --- html5lib/tests/test_treewalkers.py | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/html5lib/tests/test_treewalkers.py b/html5lib/tests/test_treewalkers.py index d6470b54..67fc89e5 100644 --- a/html5lib/tests/test_treewalkers.py +++ b/html5lib/tests/test_treewalkers.py @@ -1,5 +1,7 @@ from __future__ import absolute_import, division, unicode_literals +import itertools + import pytest try: @@ -100,28 +102,10 @@ def test_treewalker_six_mix(): yield runTreewalkerEditTest, intext, expected, attrs, tree -@pytest.mark.parametrize("tree", sorted(treeTypes.items())) -def test_fragment_single_char(tree): - expected = [ - {'data': 'x', 'type': 'Characters'} - ] - - treeName, treeClass = tree - if treeClass is None: - pytest.skip("Treebuilder not loaded") - - parser = html5parser.HTMLParser(tree=treeClass["builder"]) - document = parser.parseFragment("x") - document = treeClass.get("adapter", lambda x: x)(document) - output = Lint(treeClass["walker"](document)) - - assert list(output) == expected - - -@pytest.mark.parametrize("tree", sorted(treeTypes.items())) -def test_fragment_single_non_ascii_char(tree): +@pytest.mark.parametrize("tree,char", itertools.product(sorted(treeTypes.items()), ["x", "\u1234"])) +def test_fragment_single_char(tree, char): expected = [ - {'data': '\u1234', 'type': 'Characters'} + {'data': char, 'type': 'Characters'} ] treeName, treeClass = tree @@ -129,7 +113,7 @@ def test_fragment_single_non_ascii_char(tree): pytest.skip("Treebuilder not loaded") parser = html5parser.HTMLParser(tree=treeClass["builder"]) - document = parser.parseFragment("\u1234") + document = parser.parseFragment(char) document = treeClass.get("adapter", lambda x: x)(document) output = Lint(treeClass["walker"](document))