1111except AttributeError :
1212 unittest .TestCase .assertEqual = unittest .TestCase .assertEquals
1313
14- from . support import get_data_files , TestData , convertExpected
14+ import pytest
1515
16- from html5lib import html5parser , treewalkers , treebuilders , treeadapters , constants
17- from html5lib .filters .lint import Filter as Lint
18-
19-
20- treeTypes = {
21- "DOM" : {"builder" : treebuilders .getTreeBuilder ("dom" ),
22- "walker" : treewalkers .getTreeWalker ("dom" )},
23- }
24-
25- # Try whatever etree implementations are available from a list that are
26- #"supposed" to work
27- try :
28- import xml .etree .ElementTree as ElementTree
29- except ImportError :
30- pass
31- else :
32- treeTypes ['ElementTree' ] = \
33- {"builder" : treebuilders .getTreeBuilder ("etree" , ElementTree , fullTree = True ),
34- "walker" : treewalkers .getTreeWalker ("etree" , ElementTree )}
35-
36- try :
37- import xml .etree .cElementTree as ElementTree
38- except ImportError :
39- pass
40- else :
41- treeTypes ['cElementTree' ] = \
42- {"builder" : treebuilders .getTreeBuilder ("etree" , ElementTree , fullTree = True ),
43- "walker" : treewalkers .getTreeWalker ("etree" , ElementTree )}
16+ from .support import get_data_files , TestData , convertExpected , treeTypes
4417
45-
46- try :
47- import lxml .etree as ElementTree # flake8: noqa
48- except ImportError :
49- pass
50- else :
51- treeTypes ['lxml_native' ] = \
52- {"builder" : treebuilders .getTreeBuilder ("lxml" ),
53- "walker" : treewalkers .getTreeWalker ("lxml" )}
54-
55-
56- try :
57- import genshi # flake8: noqa
58- except ImportError :
59- pass
60- else :
61- treeTypes ["genshi" ] = \
62- {"builder" : treebuilders .getTreeBuilder ("dom" ),
63- "adapter" : lambda tree : treeadapters .genshi .to_genshi (treewalkers .getTreeWalker ("dom" )(tree )),
64- "walker" : treewalkers .getTreeWalker ("genshi" )}
18+ from html5lib import html5parser , treewalkers , constants
19+ from html5lib .filters .lint import Filter as Lint
6520
6621import re
6722attrlist = re .compile (r"^(\s+)\w+=.*(\n\1\w+=.*)+" , re .M )
@@ -89,6 +44,8 @@ def test_all_tokens(self):
8944 {'type' : 'EndTag' , 'namespace' : 'http://www.w3.org/1999/xhtml' , 'name' : 'html' }
9045 ]
9146 for treeName , treeCls in sorted (treeTypes .items ()):
47+ if treeCls is None :
48+ continue
9249 p = html5parser .HTMLParser (tree = treeCls ["builder" ])
9350 document = p .parse ("<html><head></head><body>a<div>b</div>c</body></html>" )
9451 document = treeCls .get ("adapter" , lambda x : x )(document )
@@ -98,6 +55,8 @@ def test_all_tokens(self):
9855
9956
10057def runTreewalkerTest (innerHTML , input , expected , errors , treeClass ):
58+ if treeClass is None :
59+ pytest .skip ("Treebuilder not loaded" )
10160 warnings .resetwarnings ()
10261 warnings .simplefilter ("error" )
10362 try :
@@ -164,6 +123,8 @@ def set_attribute_on_first_child(docfrag, name, value, treeName):
164123def runTreewalkerEditTest (intext , expected , attrs_to_add , tree ):
165124 """tests what happens when we add attributes to the intext"""
166125 treeName , treeClass = tree
126+ if treeClass is None :
127+ pytest .skip ("Treebuilder not loaded" )
167128 parser = html5parser .HTMLParser (tree = treeClass ["builder" ])
168129 document = parser .parseFragment (intext )
169130 for nom , val in attrs_to_add :
0 commit comments