[3.9] bpo-34480: fix bug where match variable is used prior to being defined (GH-17643) (GH-32256)

Co-authored-by: Ezio Melotti <ezio.melotti@gmail.com>
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
This commit is contained in:
Marek Suscak 2022-05-16 18:19:04 +02:00 committed by GitHub
parent 1699a5ee13
commit 518b238967
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 0 deletions

View file

@ -787,5 +787,27 @@ class AttributesTestCase(TestCaseBase):
('starttag', 'form',
[('action', 'bogus|&#()value')])])
def test_invalid_keyword_error_exception(self):
# bpo-34480: check that subclasses that define an
# error method that raises an exception work
class InvalidMarkupException(Exception):
pass
class MyHTMLParser(html.parser.HTMLParser):
def error(self, message):
raise InvalidMarkupException(message)
parser = MyHTMLParser()
with self.assertRaises(InvalidMarkupException):
parser.feed('<![invalid>')
def test_invalid_keyword_error_pass(self):
# bpo-34480: check that subclasses that define an
# error method that doesn't raise an exception work
class MyHTMLParser(html.parser.HTMLParser):
def error(self, message):
pass
parser = MyHTMLParser()
self.assertEqual(parser.feed('<![invalid>'), None)
if __name__ == "__main__":
unittest.main()