diff --git a/Lib/test/test_htmlparser.py b/Lib/test/test_htmlparser.py
index f557da1021f..192a3419354 100644
--- a/Lib/test/test_htmlparser.py
+++ b/Lib/test/test_htmlparser.py
@@ -181,60 +181,6 @@ DOCTYPE html [
("data", "this < text > contains < bare>pointy< brackets"),
])
- def test_attr_syntax(self):
- output = [
- ("starttag", "a", [("b", "v"), ("c", "v"), ("d", "v"), ("e", None)])
- ]
- self._run_check("""""", output)
- self._run_check("""""", output)
- self._run_check("""""", output)
- self._run_check("""""", output)
-
- def test_attr_values(self):
- self._run_check("""""",
- [("starttag", "a", [("b", "xxx\n\txxx"),
- ("c", "yyy\t\nyyy"),
- ("d", "\txyz\n")])
- ])
- self._run_check("""""", [
- ("starttag", "a", [("b", ""), ("c", "")]),
- ])
- # Regression test for SF patch #669683.
- self._run_check("", [
- ("starttag", "e", [("a", "rgb(1,2,3)")]),
- ])
- # Regression test for SF bug #921657.
- self._run_check("", [
- ("starttag", "a", [("href", "mailto:xyz@example.com")]),
- ])
-
- def test_attr_nonascii(self):
- # see issue 7311
- self._run_check(u"
", [
- ("starttag", "img", [("src", "/foo/bar.png"),
- ("alt", u"\u4e2d\u6587")]),
- ])
- self._run_check(u"", [
- ("starttag", "a", [("title", u"\u30c6\u30b9\u30c8"),
- ("href", u"\u30c6\u30b9\u30c8.html")]),
- ])
- self._run_check(u'', [
- ("starttag", "a", [("title", u"\u30c6\u30b9\u30c8"),
- ("href", u"\u30c6\u30b9\u30c8.html")]),
- ])
-
- def test_attr_entity_replacement(self):
- self._run_check("""""", [
- ("starttag", "a", [("b", "&><\"'")]),
- ])
-
- def test_attr_funky_names(self):
- self._run_check("""""", [
- ("starttag", "a", [("a.b", "v"), ("c:d", "v"), ("e-f", "v")]),
- ])
-
def test_illegal_declarations(self):
self._parse_error('')
@@ -342,12 +288,6 @@ DOCTYPE html [
("data", content),
("endtag", element_lower)])
-
- def test_entityrefs_in_attributes(self):
- self._run_check("", [
- ("starttag", "html", [("foo", u"\u20AC&aa&unsupported;")])
- ])
-
def test_malformatted_charref(self):
self._run_check("bad;
", [
("starttag", "p", []),
@@ -361,8 +301,66 @@ DOCTYPE html [
self.assertEqual(parser.unescape('&'),'&')
+
+class AttributesTestCase(TestCaseBase):
+
+ def test_attr_syntax(self):
+ output = [
+ ("starttag", "a", [("b", "v"), ("c", "v"), ("d", "v"), ("e", None)])
+ ]
+ self._run_check("""""", output)
+ self._run_check("""""", output)
+ self._run_check("""""", output)
+ self._run_check("""""", output)
+
+ def test_attr_values(self):
+ self._run_check("""""",
+ [("starttag", "a", [("b", "xxx\n\txxx"),
+ ("c", "yyy\t\nyyy"),
+ ("d", "\txyz\n")])])
+ self._run_check("""""",
+ [("starttag", "a", [("b", ""), ("c", "")])])
+ # Regression test for SF patch #669683.
+ self._run_check("",
+ [("starttag", "e", [("a", "rgb(1,2,3)")])])
+ # Regression test for SF bug #921657.
+ self._run_check(
+ "",
+ [("starttag", "a", [("href", "mailto:xyz@example.com")])])
+
+ def test_attr_nonascii(self):
+ # see issue 7311
+ self._run_check(
+ u"
",
+ [("starttag", "img", [("src", "/foo/bar.png"),
+ ("alt", u"\u4e2d\u6587")])])
+ self._run_check(
+ u"",
+ [("starttag", "a", [("title", u"\u30c6\u30b9\u30c8"),
+ ("href", u"\u30c6\u30b9\u30c8.html")])])
+ self._run_check(
+ u'',
+ [("starttag", "a", [("title", u"\u30c6\u30b9\u30c8"),
+ ("href", u"\u30c6\u30b9\u30c8.html")])])
+
+ def test_attr_entity_replacement(self):
+ self._run_check(
+ "",
+ [("starttag", "a", [("b", "&><\"'")])])
+
+ def test_attr_funky_names(self):
+ self._run_check(
+ "",
+ [("starttag", "a", [("a.b", "v"), ("c:d", "v"), ("e-f", "v")])])
+
+
+ def test_entityrefs_in_attributes(self):
+ self._run_check(
+ "",
+ [("starttag", "html", [("foo", u"\u20AC&aa&unsupported;")])])
+
def test_main():
- test_support.run_unittest(HTMLParserTestCase)
+ test_support.run_unittest(HTMLParserTestCase, AttributesTestCase)
if __name__ == "__main__":