From 15bdc85117785d583b9ae71d256929a431478f4c Mon Sep 17 00:00:00 2001 From: Baptiste Mispelon Date: Fri, 27 Sep 2013 17:00:42 +0200 Subject: [PATCH] [1.6.x] Fix #21185: Added tests for unescape_entities. Also fixed a py3 incompatibility. Thanks to brutasse for the report. Backport of 3754f4ad410640382f9fe25073da03009cdc2ea3 from master. --- django/utils/text.py | 4 ++-- tests/utils_tests/test_text.py | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/django/utils/text.py b/django/utils/text.py index 6329b36df8..92eda53b17 100644 --- a/django/utils/text.py +++ b/django/utils/text.py @@ -365,12 +365,12 @@ def _replace_entity(match): c = int(text[1:], 16) else: c = int(text) - return unichr(c) + return six.unichr(c) except ValueError: return match.group(0) else: try: - return unichr(html_entities.name2codepoint[text]) + return six.unichr(html_entities.name2codepoint[text]) except (ValueError, KeyError): return match.group(0) diff --git a/tests/utils_tests/test_text.py b/tests/utils_tests/test_text.py index c9dde6b1b3..dd72d26e06 100644 --- a/tests/utils_tests/test_text.py +++ b/tests/utils_tests/test_text.py @@ -106,3 +106,16 @@ class TestUtilsText(SimpleTestCase): ) for value, output in items: self.assertEqual(text.slugify(value), output) + + def test_unescape_entities(self): + items = [ + ('', ''), + ('foo', 'foo'), + ('&', '&'), + ('&', '&'), + ('&', '&'), + ('foo & bar', 'foo & bar'), + ('foo & bar', 'foo & bar'), + ] + for value, output in items: + self.assertEqual(text.unescape_entities(value), output)