Skip to content

Commit 70b8e5d

Browse files
committed
test: add charref test
1 parent 43804bb commit 70b8e5d

File tree

1 file changed

+31
-3
lines changed

1 file changed

+31
-3
lines changed

Lib/test/test_htmlparser.py

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,9 @@ def test_cdata_content(self):
294294
self._run_check(s, [("starttag", element_lower, []),
295295
("data", content),
296296
("endtag", element_lower)])
297+
297298
def test_raw_text_content(self):
298-
"""See gh-issue #118350"""
299+
# Tags should be treated as text in raw text and escapable raw text content.
299300
content = """<h1>tagshould be handled as text"""
300301
elements = [
301302
"script",
@@ -318,6 +319,33 @@ def test_raw_text_content(self):
318319
("data", content)
319320
])
320321

322+
def test_escapable_raw_text_content(self):
323+
# Charrefs should be escaped in esacapable raw text content.
324+
class Collector(EventCollector):
325+
pass
326+
327+
content = "Timon &amp; Pumba"
328+
expected = "Timon & Pumba"
329+
elements = [
330+
"title",
331+
"textarea",
332+
"TITLE",
333+
"TEXTAREA",
334+
"Title",
335+
"Textarea",
336+
]
337+
for element in elements:
338+
source = f"<{element}>{content}"
339+
self._run_check(
340+
source, [
341+
("starttag", element.lower(), []),
342+
('data', 'Timon '),
343+
('entityref', 'amp'),
344+
('data', ' Pumba')
345+
],
346+
collector=Collector(convert_charrefs=False),
347+
)
348+
321349
def test_cdata_with_closing_tags(self):
322350
# see issue #13358
323351
# make sure that HTMLParser calls handle_data only once for each CDATA.
@@ -496,7 +524,7 @@ def test_slashes_in_starttag(self):
496524
('starttag', 'a', [('foo', None), ('=', None), ('bar', None)])
497525
]
498526
self._run_check(html, expected)
499-
#see issue #14538
527+
# see issue #14538
500528
html = ('<meta><meta / ><meta // ><meta / / >'
501529
'<meta/><meta /><meta //><meta//>')
502530
expected = [
@@ -909,4 +937,4 @@ def test_base_class_methods_called(self, super_reset_method, super_init_method):
909937

910938

911939
if __name__ == "__main__":
912-
unittest.main()
940+
unittest.main()

0 commit comments

Comments
 (0)