Skip to content

Commit bd4ad51

Browse files
committed
Make treewalker tests deal gracefully with warnings and add public/sys id support to pulldom
--HG-- extra : convert_revision : svn%3Aacbfec75-9323-0410-a652-858a13e371e0/trunk%401140
1 parent 0148007 commit bd4ad51

File tree

1 file changed

+23
-8
lines changed

1 file changed

+23
-8
lines changed

tests/test_treewalkers.py

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22
import sys
33
import StringIO
44
import unittest
5+
import warnings
6+
7+
warnings.simplefilter("error")
58

69
from support import html5lib_test_files, TestData, convertExpected
710

8-
from html5lib import html5parser, treewalkers, treebuilders
11+
from html5lib import html5parser, treewalkers, treebuilders, constants
912
from html5lib.filters.lint import Filter as LintFilter, LintError
1013

1114
def PullDOMAdapter(node):
@@ -137,7 +140,8 @@ def GenshiAdapter(tree):
137140
yield COMMENT, token["data"], (None, -1, -1)
138141

139142
elif type == "Doctype":
140-
yield DOCTYPE, (token["name"], None, None), (None, -1, -1)
143+
yield DOCTYPE, (token["name"], token["publicId"],
144+
token["systemId"]), (None, -1, -1)
141145

142146
else:
143147
pass # FIXME: What to do?
@@ -192,7 +196,14 @@ def convertTokens(tokens):
192196
output.append("%s<!-- %s -->" % (" "*indent, token["data"]))
193197
elif type == "Doctype":
194198
if token["name"]:
195-
output.append("%s<!DOCTYPE %s>" % (" "*indent, token["name"]))
199+
if token["publicId"] or token["systemId"]:
200+
output.append("""%s<!DOCTYPE %s "%s" "%s">"""%
201+
(" "*indent, token["name"],
202+
token["publicId"],
203+
token["systemId"]))
204+
else:
205+
output.append("%s<!DOCTYPE %s>"%(" "*indent,
206+
token["name"]))
196207
else:
197208
output.append("%s<!DOCTYPE >" % (" "*indent,))
198209
elif type in ("Characters", "SpaceCharacters"):
@@ -211,11 +222,15 @@ def sortattrs(x):
211222
class TestCase(unittest.TestCase):
212223
def runTest(self, innerHTML, input, expected, errors, treeClass):
213224
p = html5parser.HTMLParser(tree = treeClass["builder"])
214-
215-
if innerHTML:
216-
document = p.parseFragment(StringIO.StringIO(input), innerHTML)
217-
else:
218-
document = p.parse(StringIO.StringIO(input))
225+
226+
try:
227+
if innerHTML:
228+
document = p.parseFragment(StringIO.StringIO(input), innerHTML)
229+
else:
230+
document = p.parse(StringIO.StringIO(input))
231+
except constants.DataLossWarning:
232+
#Ignore testcases we know we don't pass
233+
return
219234
document = treeClass.get("adapter", lambda x: x)(document)
220235
try:
221236
output = convertTokens(treeClass["walker"](document))

0 commit comments

Comments
 (0)