Skip to content

Commit df16775

Browse files
committed
Use treeTypes from tests/support.py in the parser tests.
This avoids duplicating the list. Also start work on the Great Unicode Cleanup.
1 parent bfa3cd3 commit df16775

File tree

1 file changed

+9
-57
lines changed

1 file changed

+9
-57
lines changed

html5lib/tests/test_parser.py

Lines changed: 9 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -8,58 +8,10 @@
88
warnings.simplefilter("error")
99

1010
from support import html5lib_test_files as data_files
11-
from support import TestData, convert, convertExpected
11+
from support import TestData, convert, convertExpected, treeTypes
1212
import html5lib
1313
from html5lib import html5parser, treebuilders, constants
1414

15-
treeTypes = {"simpletree":treebuilders.getTreeBuilder("simpletree"),
16-
"DOM":treebuilders.getTreeBuilder("dom")}
17-
18-
#Try whatever etree implementations are avaliable from a list that are
19-
#"supposed" to work
20-
try:
21-
import xml.etree.ElementTree as ElementTree
22-
treeTypes['ElementTree'] = treebuilders.getTreeBuilder("etree", ElementTree, fullTree=True)
23-
except ImportError:
24-
try:
25-
import elementtree.ElementTree as ElementTree
26-
treeTypes['ElementTree'] = treebuilders.getTreeBuilder("etree", ElementTree, fullTree=True)
27-
except ImportError:
28-
pass
29-
30-
try:
31-
import xml.etree.cElementTree as cElementTree
32-
treeTypes['cElementTree'] = treebuilders.getTreeBuilder("etree", cElementTree, fullTree=True)
33-
except ImportError:
34-
try:
35-
import cElementTree
36-
treeTypes['cElementTree'] = treebuilders.getTreeBuilder("etree", cElementTree, fullTree=True)
37-
except ImportError:
38-
pass
39-
40-
try:
41-
try:
42-
import lxml.html as lxml
43-
except ImportError:
44-
import lxml.etree as lxml
45-
treeTypes['lxml'] = treebuilders.getTreeBuilder("lxml", lxml, fullTree=True)
46-
except ImportError:
47-
pass
48-
49-
try:
50-
import BeautifulSoup
51-
treeTypes["beautifulsoup"] = treebuilders.getTreeBuilder("beautifulsoup", fullTree=True)
52-
except ImportError:
53-
pass
54-
55-
#Try whatever dom implementations are avaliable from a list that are
56-
#"supposed" to work
57-
try:
58-
import pxdom
59-
treeTypes["pxdom"] = treebuilders.getTreeBuilder("dom", pxdom)
60-
except ImportError:
61-
pass
62-
6315
#Run the parse error checks
6416
checkParseErrors = False
6517

@@ -91,7 +43,7 @@ def runParserTest(innerHTML, input, expected, errors, treeClass,
9143
return
9244
except:
9345
errorMsg = u"\n".join([u"\n\nInput:", input, u"\nExpected:", expected,
94-
u"\nTraceback:", traceback.format_exc()])
46+
u"\nTraceback:", traceback.format_exc().decode('utf8')])
9547
assert False, errorMsg.encode("utf8")
9648

9749
output = convertTreeDump(p.tree.testSerializer(document))
@@ -108,8 +60,8 @@ def runParserTest(innerHTML, input, expected, errors, treeClass,
10860
((line,col), errorcode, datavars) in p.errors]
10961

11062
errorMsg2 = u"\n".join([u"\n\nInput:", input,
111-
u"\nExpected errors (" + str(len(errors)) + u"):\n" + u"\n".join(errors),
112-
u"\nActual errors (" + str(len(p.errors)) + u"):\n" + u"\n".join(errStr)])
63+
u"\nExpected errors (" + unicode(len(errors)) + u"):\n" + u"\n".join(errors),
64+
u"\nActual errors (" + unicode(len(p.errors)) + u"):\n" + u"\n".join(errStr)])
11365
if checkParseErrors:
11466
assert len(p.errors) == len(errors), errorMsg2.encode("utf-8")
11567

@@ -120,15 +72,15 @@ def test_parser():
12072
for filename in files:
12173
testName = os.path.basename(filename).replace(".dat","")
12274

123-
tests = TestData(filename, "data")
75+
tests = TestData(filename, u"data")
12476

12577
for index, test in enumerate(tests):
12678
input, errors, innerHTML, expected = [test[key] for key in
127-
'data', 'errors',
128-
'document-fragment',
129-
'document']
79+
u'data', u'errors',
80+
u'document-fragment',
81+
u'document']
13082
if errors:
131-
errors = errors.split("\n")
83+
errors = errors.split(u"\n")
13284

13385
for treeName, treeCls in treeTypes.iteritems():
13486
for namespaceHTMLElements in (True, False):

0 commit comments

Comments
 (0)