@@ -113,47 +113,49 @@ def sortattrs(x):
113113 return "\n " .join (lines )
114114
115115class 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+
137139def 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
148149
149150def buildTestSuite ():
150151 tests = 0
151- for func , innerHTML , input , expected , errors , treeName , treeCls in test_parser ():
152+ for func , innerHTML , input , expected , errors in test_parser ():
152153 tests += 1
153154 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 )
157159 instanceMethod = new .instancemethod (testFunc , None , TestCase )
158160 setattr (TestCase , testName , instanceMethod )
159161 return unittest .TestLoader ().loadTestsFromTestCase (TestCase )
0 commit comments