#13358: HTMLParser now calls handle_data only once for each CDATA.
diff --git a/Lib/test/test_htmlparser.py b/Lib/test/test_htmlparser.py
index b84e7dc..5dfe466 100644
--- a/Lib/test/test_htmlparser.py
+++ b/Lib/test/test_htmlparser.py
@@ -286,6 +286,27 @@
("data", content),
("endtag", element_lower)])
+ def test_cdata_with_closing_tags(self):
+ # see issue #13358
+ # make sure that HTMLParser calls handle_data only once for each CDATA.
+ # The normal event collector normalizes the events in get_events,
+ # so we override it to return the original list of events.
+ class Collector(EventCollector):
+ def get_events(self):
+ return self.events
+
+ content = """<!-- not a comment --> ¬-an-entity-ref;
+ <a href="" /> </p><p> & <span></span></style>
+ '</script' + '>' </html> </head> </scripter>!"""
+ for element in [' script', 'script ', ' script ',
+ '\nscript', 'script\n', '\nscript\n']:
+ s = u'<script>{content}</{element}>'.format(element=element,
+ content=content)
+ self._run_check(s, [("starttag", "script", []),
+ ("data", content),
+ ("endtag", "script")],
+ collector=Collector)
+
def test_malformatted_charref(self):
self._run_check("<p>&#bad;</p>", [
("starttag", "p", []),