diff -ur _orig\test_htmlparser.py .\test_htmlparser.py --- _orig\test_htmlparser.py Tue May 27 12:41:08 2008 +++ .\test_htmlparser.py Tue Aug 24 11:44:20 2010 @@ -8,10 +8,10 @@ class EventCollector(HTMLParser.HTMLParser): - def __init__(self): + def __init__(self, *args, **kwargs): self.events = [] self.append = self.events.append - HTMLParser.HTMLParser.__init__(self) + HTMLParser.HTMLParser.__init__(self, *args, **kwargs) def get_events(self): # Normalize the list of events so that buffer artefacts don't @@ -72,8 +72,10 @@ class TestCaseBase(unittest.TestCase): - def _run_check(self, source, expected_events, collector=EventCollector): - parser = collector() + def _run_check(self, source, expected_events, collector=None): + if collector is None: + collector = EventCollector() + parser = collector for s in source: parser.feed(s) parser.close() @@ -84,7 +86,7 @@ "\nReceived:\n" + pprint.pformat(events)) def _run_check_extra(self, source, events): - self._run_check(source, events, EventCollectorExtra) + self._run_check(source, events, EventCollectorExtra()) def _parse_error(self, source): def parse(source=source): @@ -314,8 +316,30 @@ ]) +class HTMLParserTolerantTestCase(TestCaseBase): + def test_tolerant_parsing(self): + c = EventCollector(tolerant=9, + warning_file=sys.stdout + ) + self._run_check('te>>xt&a<\n' + '= 5, "%s warnings" % c.warning_count) + def test_main(): - test_support.run_unittest(HTMLParserTestCase) + test_support.run_unittest( + HTMLParserTestCase, + HTMLParserTolerantTestCase + ) if __name__ == "__main__":