@@ -13,25 +13,38 @@ class TreeConstructionFile(pytest.File):
1313def collect (self ):
1414tests = TestData (str (self .fspath ),"data" )
1515for 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
3750def convertTreeDump (data ):