summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2014-12-23 21:49:05 +0100
committerAymeric Augustin <aymeric.augustin@m4x.org>2014-12-27 17:44:54 +0100
commit5c5eb5fea4d7dcd2b0eed982021cfa8aeee2efd8 (patch)
treef44ac73f7da7640547c96bd84f6b825d729d4a40 /tests
parent89e2c60f4396241c667b7a1de37765b7c96d702f (diff)
Fixed an inconsistency introduced in 547b1810.
mark_safe and mark_for_escaping should have been kept similar. On Python 2 this change has no effect. On Python 3 it fixes the use case shown in the regression test for mark_for_escaping, which used to raise a TypeError. The regression test for mark_safe is just for completeness.
Diffstat (limited to 'tests')
-rw-r--r--tests/utils_tests/test_safestring.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/utils_tests/test_safestring.py b/tests/utils_tests/test_safestring.py
index c953412430..053d9f42fa 100644
--- a/tests/utils_tests/test_safestring.py
+++ b/tests/utils_tests/test_safestring.py
@@ -33,6 +33,15 @@ class SafeStringTest(TestCase):
self.assertIsInstance(mark_safe(b), SafeData)
self.assertRenderEqual('{{ s }}', 'a&b', s=mark_safe(s))
+ def test_mark_safe_object_implementing_dunder_str(self):
+ class Obj(object):
+ def __str__(self):
+ return '<obj>'
+
+ s = mark_safe(Obj())
+
+ self.assertRenderEqual('{{ s }}', '<obj>', s=s)
+
def test_mark_for_escaping(self):
s = mark_for_escaping('a&b')
self.assertRenderEqual('{{ s }}', 'a&amp;b', s=s)
@@ -50,6 +59,15 @@ class SafeStringTest(TestCase):
s = '<h1>interop</h1>'
self.assertEqual(s, mark_safe(s).__html__())
+ def test_mark_for_escaping_object_implementing_dunder_str(self):
+ class Obj(object):
+ def __str__(self):
+ return '<obj>'
+
+ s = mark_for_escaping(Obj())
+
+ self.assertRenderEqual('{{ s }}', '&lt;obj&gt;', s=s)
+
def test_add_lazy_safe_text_and_safe_text(self):
s = html.escape(lazystr('a'))
s += mark_safe('&b')