Skip to content

Commit 0cb9e89

Browse files
committed
Split out each tree construction test into its own collector
1 parent 06fade8 commit 0cb9e89

File tree

1 file changed

+32
-19
lines changed

1 file changed

+32
-19
lines changed

html5lib/tests/tree_construction.py

+32-19
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,38 @@ class TreeConstructionFile(pytest.File):
1313
def collect(self):
1414
tests = TestData(str(self.fspath), "data")
1515
for i, test in enumerate(tests):
16-
for treeName, treeAPIs in sorted(treeTypes.items()):
17-
if treeAPIs is not None and "adapter" in treeAPIs:
18-
continue
19-
for namespaceHTMLElements in (True, False):
20-
if namespaceHTMLElements:
21-
nodeid = "%d::%s::namespaced" % (i, treeName)
22-
else:
23-
nodeid = "%d::%s::void-namespace" % (i, treeName)
24-
item = ParserTest(nodeid,
25-
self,
26-
test,
27-
treeAPIs["builder"] if treeAPIs is not None else None,
28-
namespaceHTMLElements)
29-
item.add_marker(getattr(pytest.mark, treeName))
30-
if namespaceHTMLElements:
31-
item.add_marker(pytest.mark.namespaced)
32-
if treeAPIs is None:
33-
item.add_marker(pytest.mark.skipif(True, reason="Treebuilder not loaded"))
34-
yield item
16+
yield TreeConstructionTest(str(i), self, testdata=test)
17+
18+
19+
class TreeConstructionTest(pytest.Collector):
20+
def __init__(self, name, parent=None, config=None, session=None, testdata=None):
21+
super(TreeConstructionTest, self).__init__(name, parent, config, session)
22+
self.testdata = testdata
23+
24+
def collect(self):
25+
for treeName, treeAPIs in sorted(treeTypes.items()):
26+
for x in self._getParserTests(treeName, treeAPIs):
27+
yield x
28+
29+
def _getParserTests(self, treeName, treeAPIs):
30+
if treeAPIs is not None and "adapter" in treeAPIs:
31+
return
32+
for namespaceHTMLElements in (True, False):
33+
if namespaceHTMLElements:
34+
nodeid = "%s::namespaced" % treeName
35+
else:
36+
nodeid = "%s::void-namespace" % treeName
37+
item = ParserTest(nodeid,
38+
self,
39+
self.testdata,
40+
treeAPIs["builder"] if treeAPIs is not None else None,
41+
namespaceHTMLElements)
42+
item.add_marker(getattr(pytest.mark, treeName))
43+
if namespaceHTMLElements:
44+
item.add_marker(pytest.mark.namespaced)
45+
if treeAPIs is None:
46+
item.add_marker(pytest.mark.skipif(True, reason="Treebuilder not loaded"))
47+
yield item
3548

3649

3750
def convertTreeDump(data):

0 commit comments

Comments
 (0)