@@ -113,47 +113,49 @@ def sortattrs(x):
113
113
return "\n " .join (lines )
114
114
115
115
class TestCase (unittest .TestCase ):
116
- def runParserTest (self , innerHTML , input , expected , errors , treeClass ):
117
- #XXX - move this out into the setup function
118
- #concatenate all consecutive character tokens into a single token
119
- p = html5parser .HTMLParser (tree = treeClass )
120
- if innerHTML :
121
- document = p .parseFragment (StringIO .StringIO (input ), innerHTML )
122
- else :
123
- document = p .parse (StringIO .StringIO (input ))
124
- output = convertTreeDump (p .tree .testSerializer (document ))
125
- output = attrlist .sub (sortattrs , output )
126
- expected = attrlist .sub (sortattrs , expected )
127
- errorMsg = "\n " .join (["\n \n Expected:" , expected ,
128
- "\n Recieved:" , output ])
129
- self .assertEquals (expected , output , errorMsg )
130
- errStr = ["Line: %i Col: %i %s" % (line , col , message ) for
131
- ((line ,col ), message ) in p .errors ]
132
- errorMsg2 = "\n " .join (["\n \n Input errors:\n " + "\n " .join (errors ),
133
- "Actual errors:\n " + "\n " .join (errStr )])
134
- if checkParseErrors :
135
- self .assertEquals (len (p .errors ), len (errors ), errorMsg2 )
136
-
116
+ def runParserTest (self , innerHTML , input , expected , errors ):
117
+ for treeName , treeClass in treeTypes .iteritems ():
118
+ #XXX - move this out into the setup function
119
+ #concatenate all consecutive character tokens into a single token
120
+ p = html5parser .HTMLParser (tree = treeClass )
121
+ if innerHTML :
122
+ document = p .parseFragment (StringIO .StringIO (input ), innerHTML )
123
+ else :
124
+ document = p .parse (StringIO .StringIO (input ))
125
+ output = convertTreeDump (p .tree .testSerializer (document ))
126
+ output = attrlist .sub (sortattrs , output )
127
+ expected = attrlist .sub (sortattrs , expected )
128
+ errorMsg = "\n " .join (["\n \n Tree:" , treeName ,
129
+ "\n Expected:" , expected ,
130
+ "\n Recieved:" , output ])
131
+ self .assertEquals (expected , output , errorMsg )
132
+ errStr = ["Line: %i Col: %i %s" % (line , col , message ) for
133
+ ((line ,col ), message ) in p .errors ]
134
+ errorMsg2 = "\n " .join (["\n \n Input errors:\n " + "\n " .join (errors ),
135
+ "Actual errors:\n " + "\n " .join (errStr )])
136
+ if checkParseErrors :
137
+ self .assertEquals (len (p .errors ), len (errors ), errorMsg2 )
138
+
137
139
def test_parser ():
138
- for name , cls in treeTypes .iteritems ():
139
- for filename in glob .glob ('tree-construction/*.dat' ):
140
- f = open (filename )
141
- tests = f .read ().split ("#data\n " )
142
- for test in tests :
143
- if test == "" :
144
- continue
145
- test = "#data\n " + test
146
- innerHTML , input , expected , errors = parseTestcase (test )
147
- yield TestCase .runParserTest , innerHTML , input , expected , errors , name , cls
140
+ for filename in glob .glob ('tree-construction/*.dat' ):
141
+ f = open (filename )
142
+ tests = f .read ().split ("#data\n " )
143
+ for test in tests :
144
+ if test == "" :
145
+ continue
146
+ test = "#data\n " + test
147
+ innerHTML , input , expected , errors = parseTestcase (test )
148
+ yield TestCase .runParserTest , innerHTML , input , expected , errors
148
149
149
150
def buildTestSuite ():
150
151
tests = 0
151
- for func , innerHTML , input , expected , errors , treeName , treeCls in test_parser ():
152
+ for func , innerHTML , input , expected , errors in test_parser ():
152
153
tests += 1
153
154
testName = 'test%d' % tests
154
- testFunc = lambda self , method = func , innerHTML = innerHTML , input = input , expected = expected , \
155
- errors = errors , treeCls = treeCls : method (self , innerHTML , input , expected , errors , treeCls )
156
- testFunc .__doc__ = 'Parser %s Tree %s Input: %s' % (testName , treeName , input )
155
+ testFunc = lambda self , method = func , innerHTML = innerHTML , input = input , \
156
+ expected = expected , errors = errors : \
157
+ method (self , innerHTML , input , expected , errors )
158
+ testFunc .__doc__ = 'Parser %s Input: %s' % (testName , input )
157
159
instanceMethod = new .instancemethod (testFunc , None , TestCase )
158
160
setattr (TestCase , testName , instanceMethod )
159
161
return unittest .TestLoader ().loadTestsFromTestCase (TestCase )
0 commit comments