diff options
| author | Jacob Walls <jacobtylerwalls@gmail.com> | 2025-12-11 08:44:19 -0500 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2025-12-11 11:28:49 -0500 |
| commit | 7b80b2186300620931009fd62c2969f108fe7a62 (patch) | |
| tree | 7bb0c36aa6f4d8ce2ab1f54a85b0502c2c194e8d /tests/utils_tests/test_html.py | |
| parent | 7b54ddd5e64c96c641b70bb5f0e958a9e2035fb2 (diff) | |
Refs #36499 -- Adjusted test_strip_tags following Python behavior change for incomplete entities.
Diffstat (limited to 'tests/utils_tests/test_html.py')
| -rw-r--r-- | tests/utils_tests/test_html.py | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/tests/utils_tests/test_html.py b/tests/utils_tests/test_html.py index 7412c2624c..ee115aaf1c 100644 --- a/tests/utils_tests/test_html.py +++ b/tests/utils_tests/test_html.py @@ -1,3 +1,4 @@ +import math import os import sys from datetime import datetime @@ -122,14 +123,25 @@ class TestUtilsHtml(SimpleTestCase): # The check below is temporary until all supported Python versions and # CI workers include the fix. See: # https://github.com/python/cpython/commit/6eb6c5db - min_fixed = { + min_fixed_security = { (3, 13): (3, 13, 6), (3, 12): (3, 12, 12), } + # Similarly, there was a fix for terminating incomplete entities. See: + # https://github.com/python/cpython/commit/95296a9d + min_fixed_incomplete_entities = { + (3, 14): (3, 14, 1), + (3, 13): (3, 13, 10), + (3, 12): (3, 12, math.inf), # not fixed in 3.12. + } major_version = sys.version_info[:2] - htmlparser_fixed = sys.version_info >= min_fixed.get( + htmlparser_fixed_security = sys.version_info >= min_fixed_security.get( major_version, major_version ) + htmlparser_fixed_incomplete_entities = ( + sys.version_info + >= min_fixed_incomplete_entities.get(major_version, major_version) + ) items = ( ( "<p>See: 'é is an apostrophe followed by e acute</p>", @@ -156,16 +168,19 @@ class TestUtilsHtml(SimpleTestCase): # https://bugs.python.org/issue20288 ("&gotcha&#;<>", "&gotcha&#;<>"), ("<sc<!-- -->ript>test<<!-- -->/script>", "ript>test"), - ("<script>alert()</script>&h", "alert()h"), + ( + "<script>alert()</script>&h", + "alert()&h;" if htmlparser_fixed_incomplete_entities else "alert()h", + ), ( "><!" + ("&" * 16000) + "D", - ">" if htmlparser_fixed else "><!" + ("&" * 16000) + "D", + ">" if htmlparser_fixed_security else "><!" + ("&" * 16000) + "D", ), ("X<<<<br>br>br>br>X", "XX"), ("<" * 50 + "a>" * 50, ""), ( ">" + "<a" * 500 + "a", - ">" if htmlparser_fixed else ">" + "<a" * 500 + "a", + ">" if htmlparser_fixed_security else ">" + "<a" * 500 + "a", ), ("<a" * 49 + "a" * 951, "<a" * 49 + "a" * 951), ("<" + "a" * 1_002, "<" + "a" * 1_002), |
