11
11
except AttributeError :
12
12
unittest .TestCase .assertEqual = unittest .TestCase .assertEquals
13
13
14
- from . support import get_data_files , TestData , convertExpected
14
+ import pytest
15
15
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
44
17
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
65
20
66
21
import re
67
22
attrlist = re .compile (r"^(\s+)\w+=.*(\n\1\w+=.*)+" , re .M )
@@ -89,6 +44,8 @@ def test_all_tokens(self):
89
44
{'type' : 'EndTag' , 'namespace' : 'http://www.w3.org/1999/xhtml' , 'name' : 'html' }
90
45
]
91
46
for treeName , treeCls in sorted (treeTypes .items ()):
47
+ if treeCls is None :
48
+ continue
92
49
p = html5parser .HTMLParser (tree = treeCls ["builder" ])
93
50
document = p .parse ("<html><head></head><body>a<div>b</div>c</body></html>" )
94
51
document = treeCls .get ("adapter" , lambda x : x )(document )
@@ -98,6 +55,8 @@ def test_all_tokens(self):
98
55
99
56
100
57
def runTreewalkerTest (innerHTML , input , expected , errors , treeClass ):
58
+ if treeClass is None :
59
+ pytest .skip ("Treebuilder not loaded" )
101
60
warnings .resetwarnings ()
102
61
warnings .simplefilter ("error" )
103
62
try :
@@ -164,6 +123,8 @@ def set_attribute_on_first_child(docfrag, name, value, treeName):
164
123
def runTreewalkerEditTest (intext , expected , attrs_to_add , tree ):
165
124
"""tests what happens when we add attributes to the intext"""
166
125
treeName , treeClass = tree
126
+ if treeClass is None :
127
+ pytest .skip ("Treebuilder not loaded" )
167
128
parser = html5parser .HTMLParser (tree = treeClass ["builder" ])
168
129
document = parser .parseFragment (intext )
169
130
for nom , val in attrs_to_add :
0 commit comments