summaryrefslogtreecommitdiff
path: root/tests/template_tests/syntax_tests
diff options
context:
space:
mode:
authorDoug Beck <doug@douglasbeck.com>2015-04-15 17:01:11 -0400
committerTim Graham <timograham@gmail.com>2015-08-12 10:23:34 -0400
commitb7508896fbe19ec2cdeb81565cd587091b6b68d0 (patch)
tree5efb501dcc753cdaf1314ba826ca59cd44c4297b /tests/template_tests/syntax_tests
parentd772d812cf583e0f99e21850f26addf1d59bfa35 (diff)
Fixed #24257 -- Corrected i18n handling of percent signs.
Refactored tests to use a sample project. Updated extraction: * Removed special handling of single percent signs. * When extracting messages from template text, doubled all percent signs so they are not interpreted by gettext as string format flags. All strings extracted by gettext, if containing a percent sign, will now be labeled "#, python-format". Updated translation: * Used "%%" for "%" in template text before calling gettext. * Updated {% trans %} rendering to restore "%" from "%%".
Diffstat (limited to 'tests/template_tests/syntax_tests')
-rw-r--r--tests/template_tests/syntax_tests/test_basic.py9
-rw-r--r--tests/template_tests/syntax_tests/test_i18n.py10
2 files changed, 19 insertions, 0 deletions
diff --git a/tests/template_tests/syntax_tests/test_basic.py b/tests/template_tests/syntax_tests/test_basic.py
index b72d6e6414..da45fe2839 100644
--- a/tests/template_tests/syntax_tests/test_basic.py
+++ b/tests/template_tests/syntax_tests/test_basic.py
@@ -323,3 +323,12 @@ class BasicSyntaxTests(SimpleTestCase):
msg = "Unclosed tag 'if'. Looking for one of: elif, else, endif."
with self.assertRaisesMessage(TemplateSyntaxError, msg):
self.engine.render_to_string('template')
+
+ @setup({'tpl-str': '%s', 'tpl-percent': '%%', 'tpl-weird-percent': '% %s'})
+ def test_ignores_strings_that_look_like_format_interpolation(self):
+ output = self.engine.render_to_string('tpl-str')
+ self.assertEqual(output, '%s')
+ output = self.engine.render_to_string('tpl-percent')
+ self.assertEqual(output, '%%')
+ output = self.engine.render_to_string('tpl-weird-percent')
+ self.assertEqual(output, '% %s')
diff --git a/tests/template_tests/syntax_tests/test_i18n.py b/tests/template_tests/syntax_tests/test_i18n.py
index 6013251366..4fbbfffd78 100644
--- a/tests/template_tests/syntax_tests/test_i18n.py
+++ b/tests/template_tests/syntax_tests/test_i18n.py
@@ -511,3 +511,13 @@ class I18nTagTests(SimpleTestCase):
msg = "The 'noop' option was specified more than once."
with self.assertRaisesMessage(TemplateSyntaxError, msg):
self.engine.render_to_string('template')
+
+ @setup({'template': '{% load i18n %}{% trans "%s" %}'})
+ def test_trans_tag_using_a_string_that_looks_like_str_fmt(self):
+ output = self.engine.render_to_string('template')
+ self.assertEqual(output, '%s')
+
+ @setup({'template': '{% load i18n %}{% blocktrans %}%s{% endblocktrans %}'})
+ def test_blocktrans_tag_using_a_string_that_looks_like_str_fmt(self):
+ output = self.engine.render_to_string('template')
+ self.assertEqual(output, '%s')