diff options
author | Ezio Melotti <ezio.melotti@gmail.com> | 2011-11-01 12:12:22 (GMT) |
---|---|---|
committer | Ezio Melotti <ezio.melotti@gmail.com> | 2011-11-01 12:12:22 (GMT) |
commit | 7de56f6a04ab60010b3e2185752b3ddf681d068d (patch) | |
tree | bc342dd5fe10f3d8a641375ac9410cbb66e5b1f1 /Lib/test | |
parent | 4bfe03a42e4cc7e0c0504db520c6d68b302d67bd (diff) | |
download | cpython-7de56f6a04ab60010b3e2185752b3ddf681d068d.zip cpython-7de56f6a04ab60010b3e2185752b3ddf681d068d.tar.gz cpython-7de56f6a04ab60010b3e2185752b3ddf681d068d.tar.bz2 |
#670664: Fix HTMLParser to correctly handle the content of ``<script>...</script>`` and ``<style>...</style>``.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_htmlparser.py | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/Lib/test/test_htmlparser.py b/Lib/test/test_htmlparser.py index 9664485..fd8447c 100644 --- a/Lib/test/test_htmlparser.py +++ b/Lib/test/test_htmlparser.py @@ -321,18 +321,36 @@ DOCTYPE html [ ("starttag_text", s)]) def test_cdata_content(self): - s = """<script> <!-- not a comment --> ¬-an-entity-ref; </script>""" - self._run_check(s, [ - ("starttag", "script", []), - ("data", " <!-- not a comment --> ¬-an-entity-ref; "), - ("endtag", "script"), - ]) - s = """<script> <not a='start tag'> </script>""" - self._run_check(s, [ - ("starttag", "script", []), - ("data", " <not a='start tag'> "), - ("endtag", "script"), - ]) + contents = [ + '<!-- not a comment --> ¬-an-entity-ref;', + "<not a='start tag'>", + '<a href="" /> <p> <span></span>', + 'foo = "</scr" + "ipt>";', + 'foo = "</SCRIPT" + ">";', + 'foo = <\n/script> ', + '<!-- document.write("</scr" + "ipt>"); -->', + ('\n//<![CDATA[\n' + 'document.write(\'<s\'+\'cript type="text/javascript" ' + 'src="http://www.example.org/r=\'+new ' + 'Date().getTime()+\'"><\\/s\'+\'cript>\');\n//]]>'), + '\n<!-- //\nvar foo = 3.14;\n// -->\n', + 'foo = "</sty" + "le>";', + '<!-- \u2603 -->', + # these two should be invalid according to the HTML 5 spec, + # section 8.1.2.2 + #'foo = </\nscript>', + #'foo = </ script>', + ] + elements = ['script', 'style', 'SCRIPT', 'STYLE', 'Script', 'Style'] + for content in contents: + for element in elements: + element_lower = element.lower() + s = '<{element}>{content}</{element}>'.format(element=element, + content=content) + self._run_check(s, [("starttag", element_lower, []), + ("data", content), + ("endtag", element_lower)]) + def test_entityrefs_in_attributes(self): self._run_check("<html foo='€&aa&unsupported;'>", [ |