summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorDong-hee Na <donghee.na@python.org>2022-08-18 11:16:33 (GMT)
committerGitHub <noreply@github.com>2022-08-18 11:16:33 (GMT)
commit157aef79b07e07bf115e49cdf5ff25e74c66354e (patch)
tree31d1f5f372a024cc8f018802746d8eaf17659ad4 /Lib
parentc5bc67b2a17d9053be9d0079eb7de948626d33c3 (diff)
downloadcpython-157aef79b07e07bf115e49cdf5ff25e74c66354e.zip
cpython-157aef79b07e07bf115e49cdf5ff25e74c66354e.tar.gz
cpython-157aef79b07e07bf115e49cdf5ff25e74c66354e.tar.bz2
gh-95813: Improve HTMLParser from the view of inheritance (#95874)
* gh-95813: Improve HTMLParser from the view of inheritance * gh-95813: Add unittest * Address code review
Diffstat (limited to 'Lib')
-rw-r--r--Lib/html/parser.py3
-rw-r--r--Lib/test/test_htmlparser.py14
2 files changed, 16 insertions, 1 deletions
diff --git a/Lib/html/parser.py b/Lib/html/parser.py
index bef0f4f..13c95c3 100644
--- a/Lib/html/parser.py
+++ b/Lib/html/parser.py
@@ -89,6 +89,7 @@ class HTMLParser(_markupbase.ParserBase):
If convert_charrefs is True (the default), all character references
are automatically converted to the corresponding Unicode characters.
"""
+ super().__init__()
self.convert_charrefs = convert_charrefs
self.reset()
@@ -98,7 +99,7 @@ class HTMLParser(_markupbase.ParserBase):
self.lasttag = '???'
self.interesting = interesting_normal
self.cdata_elem = None
- _markupbase.ParserBase.reset(self)
+ super().reset()
def feed(self, data):
r"""Feed data to the parser.
diff --git a/Lib/test/test_htmlparser.py b/Lib/test/test_htmlparser.py
index 1291775..b42a611 100644
--- a/Lib/test/test_htmlparser.py
+++ b/Lib/test/test_htmlparser.py
@@ -4,6 +4,8 @@ import html.parser
import pprint
import unittest
+from unittest.mock import patch
+
class EventCollector(html.parser.HTMLParser):
@@ -787,5 +789,17 @@ class AttributesTestCase(TestCaseBase):
('starttag', 'form',
[('action', 'bogus|&#()value')])])
+
+class TestInheritance(unittest.TestCase):
+
+ @patch("_markupbase.ParserBase.__init__")
+ @patch("_markupbase.ParserBase.reset")
+ def test_base_class_methods_called(self, super_reset_method, super_init_method):
+ with patch('_markupbase.ParserBase') as parser_base:
+ EventCollector()
+ super_init_method.assert_called_once()
+ super_reset_method.assert_called_once()
+
+
if __name__ == "__main__":
unittest.main()