Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit06fade8

Browse files
committed
Move to a single definition of treeTypes for all tests
1 parentb5b91cc commit06fade8

File tree

3 files changed

+52
-60
lines changed

3 files changed

+52
-60
lines changed

‎html5lib/tests/support.py

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,24 @@
1313
os.path.pardir,
1414
os.path.pardir)))
1515

16-
fromhtml5libimporttreebuilders
16+
fromhtml5libimporttreebuilders,treewalkers,treeadapters
1717
delbase_path
1818

1919
# Build a dict of available trees
20-
treeTypes= {"DOM":treebuilders.getTreeBuilder("dom")}
20+
treeTypes= {}
2121

22-
# Try whatever etree implementations are available from a list that are
23-
#"supposed" to work
22+
# DOM impls
23+
treeTypes["DOM"]= {
24+
"builder":treebuilders.getTreeBuilder("dom"),
25+
"walker":treewalkers.getTreeWalker("dom")
26+
}
27+
28+
# ElementTree impls
2429
importxml.etree.ElementTreeasElementTree
25-
treeTypes['ElementTree']=treebuilders.getTreeBuilder("etree",ElementTree,fullTree=True)
30+
treeTypes['ElementTree']= {
31+
"builder":treebuilders.getTreeBuilder("etree",ElementTree,fullTree=True),
32+
"walker":treewalkers.getTreeWalker("etree",ElementTree)
33+
}
2634

2735
try:
2836
importxml.etree.cElementTreeascElementTree
@@ -33,14 +41,32 @@
3341
ifcElementTree.ElementisElementTree.Element:
3442
treeTypes['cElementTree']=None
3543
else:
36-
treeTypes['cElementTree']=treebuilders.getTreeBuilder("etree",cElementTree,fullTree=True)
44+
treeTypes['cElementTree']= {
45+
"builder":treebuilders.getTreeBuilder("etree",cElementTree,fullTree=True),
46+
"walker":treewalkers.getTreeWalker("etree",cElementTree)
47+
}
3748

3849
try:
3950
importlxml.etreeaslxml# flake8: noqa
4051
exceptImportError:
4152
treeTypes['lxml']=None
4253
else:
43-
treeTypes['lxml']=treebuilders.getTreeBuilder("lxml")
54+
treeTypes['lxml']= {
55+
"builder":treebuilders.getTreeBuilder("lxml"),
56+
"walker":treewalkers.getTreeWalker("lxml")
57+
}
58+
59+
# Genshi impls
60+
try:
61+
importgenshi# flake8: noqa
62+
exceptImportError:
63+
pass
64+
else:
65+
treeTypes["genshi"]= {
66+
"builder":treebuilders.getTreeBuilder("dom"),
67+
"adapter":lambdatree:treeadapters.genshi.to_genshi(treewalkers.getTreeWalker("dom")(tree)),
68+
"walker":treewalkers.getTreeWalker("genshi")
69+
}
4470

4571

4672
defget_data_files(subdirectory,files='*.dat'):

‎html5lib/tests/test_treewalkers.py

Lines changed: 10 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -11,57 +11,12 @@
1111
exceptAttributeError:
1212
unittest.TestCase.assertEqual=unittest.TestCase.assertEquals
1313

14-
from .supportimportget_data_files,TestData,convertExpected
14+
importpytest
1515

16-
fromhtml5libimporthtml5parser,treewalkers,treebuilders,treeadapters,constants
17-
fromhtml5lib.filters.lintimportFilterasLint
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-
importxml.etree.ElementTreeasElementTree
29-
exceptImportError:
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-
importxml.etree.cElementTreeasElementTree
38-
exceptImportError:
39-
pass
40-
else:
41-
treeTypes['cElementTree']= \
42-
{"builder":treebuilders.getTreeBuilder("etree",ElementTree,fullTree=True),
43-
"walker":treewalkers.getTreeWalker("etree",ElementTree)}
16+
from .supportimportget_data_files,TestData,convertExpected,treeTypes
4417

45-
46-
try:
47-
importlxml.etreeasElementTree# flake8: noqa
48-
exceptImportError:
49-
pass
50-
else:
51-
treeTypes['lxml_native']= \
52-
{"builder":treebuilders.getTreeBuilder("lxml"),
53-
"walker":treewalkers.getTreeWalker("lxml")}
54-
55-
56-
try:
57-
importgenshi# flake8: noqa
58-
exceptImportError:
59-
pass
60-
else:
61-
treeTypes["genshi"]= \
62-
{"builder":treebuilders.getTreeBuilder("dom"),
63-
"adapter":lambdatree:treeadapters.genshi.to_genshi(treewalkers.getTreeWalker("dom")(tree)),
64-
"walker":treewalkers.getTreeWalker("genshi")}
18+
fromhtml5libimporthtml5parser,treewalkers,constants
19+
fromhtml5lib.filters.lintimportFilterasLint
6520

6621
importre
6722
attrlist=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
fortreeName,treeClsinsorted(treeTypes.items()):
47+
iftreeClsisNone:
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",lambdax:x)(document)
@@ -98,6 +55,8 @@ def test_all_tokens(self):
9855

9956

10057
defrunTreewalkerTest(innerHTML,input,expected,errors,treeClass):
58+
iftreeClassisNone:
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):
164123
defrunTreewalkerEditTest(intext,expected,attrs_to_add,tree):
165124
"""tests what happens when we add attributes to the intext"""
166125
treeName,treeClass=tree
126+
iftreeClassisNone:
127+
pytest.skip("Treebuilder not loaded")
167128
parser=html5parser.HTMLParser(tree=treeClass["builder"])
168129
document=parser.parseFragment(intext)
169130
fornom,valinattrs_to_add:

‎html5lib/tests/tree_construction.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,23 @@ class TreeConstructionFile(pytest.File):
1313
defcollect(self):
1414
tests=TestData(str(self.fspath),"data")
1515
fori,testinenumerate(tests):
16-
fortreeName,treeClassinsorted(treeTypes.items()):
16+
fortreeName,treeAPIsinsorted(treeTypes.items()):
17+
iftreeAPIsisnotNoneand"adapter"intreeAPIs:
18+
continue
1719
fornamespaceHTMLElementsin (True,False):
1820
ifnamespaceHTMLElements:
1921
nodeid="%d::%s::namespaced"% (i,treeName)
2022
else:
2123
nodeid="%d::%s::void-namespace"% (i,treeName)
22-
item=ParserTest(nodeid,self,
23-
test,treeClass,namespaceHTMLElements)
24+
item=ParserTest(nodeid,
25+
self,
26+
test,
27+
treeAPIs["builder"]iftreeAPIsisnotNoneelseNone,
28+
namespaceHTMLElements)
2429
item.add_marker(getattr(pytest.mark,treeName))
2530
ifnamespaceHTMLElements:
2631
item.add_marker(pytest.mark.namespaced)
27-
iftreeClassisNone:
32+
iftreeAPIsisNone:
2833
item.add_marker(pytest.mark.skipif(True,reason="Treebuilder not loaded"))
2934
yielditem
3035

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp