From: Fred Drake Date: Tue, 4 Sep 2001 15:13:04 +0000 (+0000) Subject: Enhanced the test for DOCTYPE declarations, added a test for dealing with X-Git-Tag: v2.2a3~129 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c20a698932d61ea825491781186caa77eb6c0e5e;p=python Enhanced the test for DOCTYPE declarations, added a test for dealing with broken declaration-like things. --- diff --git a/Lib/test/test_htmlparser.py b/Lib/test/test_htmlparser.py index bb6e0b0fe5..4e8e73c168 100755 --- a/Lib/test/test_htmlparser.py +++ b/Lib/test/test_htmlparser.py @@ -60,6 +60,9 @@ class EventCollector(HTMLParser.HTMLParser): def handle_pi(self, data): self.append(("pi", data)) + def unknown_decl(self, decl): + self.append(("unknown decl", decl)) + class EventCollectorExtra(EventCollector): @@ -70,24 +73,16 @@ class EventCollectorExtra(EventCollector): class TestCaseBase(unittest.TestCase): - # Constant pieces of source and events - prologue = "" - epilogue = "" - initial_events = [] - final_events = [] - - def _run_check(self, source, events, collector=EventCollector): + def _run_check(self, source, expected_events, collector=EventCollector): parser = collector() - parser.feed(self.prologue) for s in source: parser.feed(s) - for c in self.epilogue: - parser.feed(c) parser.close() events = parser.get_events() - self.assertEqual(events, - self.initial_events + events + self.final_events, - "got events:\n" + pprint.pformat(events)) + if events != expected_events: + self.fail("received events did not match expected events\n" + "Expected:\n" + pprint.pformat(expected_events) + + "\nReceived:\n" + pprint.pformat(events)) def _run_check_extra(self, source, events): self._run_check(source, events, EventCollectorExtra) @@ -144,7 +139,13 @@ text DOCTYPE html [ + version CDATA #IMPLIED + profile CDATA 'DublinCore'> + + + + + %paramEntity; ]""" self._run_check("" % inside, [ @@ -201,6 +202,14 @@ DOCTYPE html [ ("starttag", "a", [("a.b", "v"), ("c:d", "v"), ("e-f", "v")]), ]) + def test_illegal_declarations(self): + s = 'abcdef' + self._run_check(s, [ + ("data", "abc"), + ("unknown decl", 'spacer type="block" height="25"'), + ("data", "def"), + ]) + def test_starttag_end_boundary(self): self._run_check("""""", [("starttag", "a", [("b", "<")])]) self._run_check("""""", [("starttag", "a", [("b", ">")])])