Mercurial > cpython-lru_cache-weakref
diff Lib/test/test_htmlparser.py @ 74070:4ddbb756b602 3.2
#13576: add tests about the handling of (possibly broken) condcoms.
| author | Ezio Melotti <ezio.melotti@gmail.com> |
|---|---|
| date | Mon, 19 Dec 2011 07:29:03 +0200 |
| parents | 0a32e7e3aa1f |
| children | 242b697449d8 |
line wrap: on
line diff
--- a/Lib/test/test_htmlparser.py Mon Dec 19 07:04:48 2011 +0200 +++ b/Lib/test/test_htmlparser.py Mon Dec 19 07:29:03 2011 +0200 @@ -323,6 +323,16 @@ ("endtag", element_lower)], collector=Collector()) + def test_condcoms(self): + html = ('<!--[if IE & !(lte IE 8)]>aren\'t<![endif]-->' + '<!--[if IE 8]>condcoms<![endif]-->' + '<!--[if lte IE 7]>pretty?<![endif]-->') + expected = [('comment', "[if IE & !(lte IE 8)]>aren't<![endif]"), + ('comment', '[if IE 8]>condcoms<![endif]'), + ('comment', '[if lte IE 7]>pretty?<![endif]')] + self._run_check(html, expected) + + class HTMLParserTolerantTestCase(HTMLParserStrictTestCase): def get_collector(self): @@ -416,6 +426,39 @@ # see #12888 self.assertEqual(p.unescape('{ ' * 1050), '{ ' * 1050) + def test_broken_condcoms(self): + # these condcoms are missing the '--' after '<!' and before the '>' + html = ('<![if !(IE)]>broken condcom<![endif]>' + '<![if ! IE]><link href="favicon.tiff"/><![endif]>' + '<![if !IE 6]><img src="firefox.png" /><![endif]>' + '<![if !ie 6]><b>foo</b><![endif]>' + '<![if (!IE)|(lt IE 9)]><img src="mammoth.bmp" /><![endif]>') + # According to the HTML5 specs sections "8.2.4.44 Bogus comment state" + # and "8.2.4.45 Markup declaration open state", comment tokens should + # be emitted instead of 'unknown decl', but calling unknown_decl + # provides more flexibility. + # See also Lib/_markupbase.py:parse_declaration + expected = [ + ('unknown decl', 'if !(IE)'), + ('data', 'broken condcom'), + ('unknown decl', 'endif'), + ('unknown decl', 'if ! IE'), + ('startendtag', 'link', [('href', 'favicon.tiff')]), + ('unknown decl', 'endif'), + ('unknown decl', 'if !IE 6'), + ('startendtag', 'img', [('src', 'firefox.png')]), + ('unknown decl', 'endif'), + ('unknown decl', 'if !ie 6'), + ('starttag', 'b', []), + ('data', 'foo'), + ('endtag', 'b'), + ('unknown decl', 'endif'), + ('unknown decl', 'if (!IE)|(lt IE 9)'), + ('startendtag', 'img', [('src', 'mammoth.bmp')]), + ('unknown decl', 'endif') + ] + self._run_check(html, expected) + class AttributesStrictTestCase(TestCaseBase):
