From 6ee37ada3241ed263d8d1c2901b030d964cbd161 Mon Sep 17 00:00:00 2001
From: David Smith
Date: Tue, 3 Jan 2023 20:48:06 +0000
Subject: Fixed #30686 -- Used Python HTMLParser in utils.text.Truncator.
---
.../filter_tests/test_truncatewords_html.py | 6 +--
tests/utils_tests/test_text.py | 48 ++++++++++++----------
2 files changed, 29 insertions(+), 25 deletions(-)
(limited to 'tests')
diff --git a/tests/template_tests/filter_tests/test_truncatewords_html.py b/tests/template_tests/filter_tests/test_truncatewords_html.py
index 32b7c81a76..0cf41d83ae 100644
--- a/tests/template_tests/filter_tests/test_truncatewords_html.py
+++ b/tests/template_tests/filter_tests/test_truncatewords_html.py
@@ -24,7 +24,7 @@ class FunctionTests(SimpleTestCase):
truncatewords_html(
'one two - three
four five
', 4
),
- 'one two - three …
',
+ 'one two - three
…
',
)
def test_truncate3(self):
@@ -32,7 +32,7 @@ class FunctionTests(SimpleTestCase):
truncatewords_html(
'one two - three
four five
', 5
),
- 'one two - three
four …
',
+ 'one two - three
four …
',
)
def test_truncate4(self):
@@ -53,7 +53,7 @@ class FunctionTests(SimpleTestCase):
truncatewords_html(
"Buenos días! ¿Cómo está?", 3
),
- "Buenos días! ¿Cómo …",
+ "Buenos días! ¿Cómo …",
)
def test_invalid_arg(self):
diff --git a/tests/utils_tests/test_text.py b/tests/utils_tests/test_text.py
index 6004712bf2..b38d8238c5 100644
--- a/tests/utils_tests/test_text.py
+++ b/tests/utils_tests/test_text.py
@@ -111,7 +111,7 @@ class TestUtilsText(SimpleTestCase):
truncator.chars(46, html=True),
)
self.assertEqual(
- 'The quick brown fox jumped over the lazy dog.'
+ 'The quick brown fox jumped over the lazy dog…'
"
",
truncator.chars(45, html=True),
)
@@ -120,7 +120,7 @@ class TestUtilsText(SimpleTestCase):
truncator.chars(10, html=True),
)
self.assertEqual(
- "…",
+ '…
',
truncator.chars(1, html=True),
)
self.assertEqual("", truncator.chars(0, html=True))
@@ -142,18 +142,16 @@ class TestUtilsText(SimpleTestCase):
bigger_len = text.Truncator.MAX_LENGTH_HTML + 1
valid_html = "Joel is a slug
" # 14 chars
perf_test_values = [
- ("", None),
- ("
", "
", None),
+ ("", ""),
+ ("", ""),
+ ("&" * bigger_len, ""),
+ ("_X<<<<<<<<<<<>", "_X<<<<<<<…"),
(valid_html * bigger_len, "Joel is a…
"), # 10 chars
]
for value, expected in perf_test_values:
with self.subTest(value=value):
truncator = text.Truncator(value)
- self.assertEqual(
- expected if expected else value, truncator.chars(10, html=True)
- )
+ self.assertEqual(expected, truncator.chars(10, html=True))
def test_truncate_chars_html_with_newline_inside_tag(self):
truncator = text.Truncator(
@@ -181,7 +179,7 @@ class TestUtilsText(SimpleTestCase):
"
The
quick brown…", truncator.chars(16, html=True)
)
self.assertEqual("
The
q…", truncator.chars(6, html=True))
- self.assertEqual("
The …", truncator.chars(5, html=True))
+ self.assertEqual("
The
…", truncator.chars(5, html=True))
self.assertEqual("
The…", truncator.chars(4, html=True))
self.assertEqual("
Th…", truncator.chars(3, html=True))
@@ -190,11 +188,19 @@ class TestUtilsText(SimpleTestCase):
"Buenos días! ¿Cómo está?"
)
self.assertEqual(
- "Buenos días! ¿Cómo…",
+ "Buenos días! ¿Cómo está?",
truncator.chars(40, html=True),
)
+ self.assertEqual(
+ "Buenos días…",
+ truncator.chars(12, html=True),
+ )
+ self.assertEqual(
+ "Buenos días! ¿Cómo está…",
+ truncator.chars(24, html=True),
+ )
truncator = text.Truncator("I <3 python, what about you?
")
- self.assertEqual("I <3 python,…
", truncator.chars(16, html=True))
+ self.assertEqual("I <3 python, wh…
", truncator.chars(16, html=True))
def test_truncate_words(self):
truncator = text.Truncator("The quick brown fox jumped over the lazy dog.")
@@ -242,7 +248,7 @@ class TestUtilsText(SimpleTestCase):
"The quick \t brown fox jumped over the lazy dog.
"
)
self.assertEqual(
- "The quick \t brown fox…
",
+ "The quick brown fox…
",
truncator.words(4, html=True),
)
@@ -277,7 +283,7 @@ class TestUtilsText(SimpleTestCase):
"Buenos días! ¿Cómo está?"
)
self.assertEqual(
- "Buenos días! ¿Cómo…",
+ "Buenos días! ¿Cómo…",
truncator.words(3, html=True),
)
truncator = text.Truncator("I <3 python, what about you?
")
@@ -292,19 +298,17 @@ class TestUtilsText(SimpleTestCase):
bigger_len = text.Truncator.MAX_LENGTH_HTML + 1
valid_html = "Joel is a slug
" # 4 words
perf_test_values = [
- ("", None),
- ("", "", None),
+ ("", ""),
+ ("", ""),
+ ("&" * max_len, ""),
+ ("&" * bigger_len, ""),
+ ("_X<<<<<<<<<<<>", "_X<<<<<<<<<<<>"),
(valid_html * bigger_len, valid_html * 12 + "Joel is…
"), # 50 words
]
for value, expected in perf_test_values:
with self.subTest(value=value):
truncator = text.Truncator(value)
- self.assertEqual(
- expected if expected else value, truncator.words(50, html=True)
- )
+ self.assertEqual(expected, truncator.words(50, html=True))
def test_wrap(self):
digits = "1234 67 9"
--
cgit v1.3