From de6b2875091e0b03e22e2e51ce0db938ecf4b98a Mon Sep 17 00:00:00 2001 From: Takahiro Fujiwara Date: Tue, 19 Feb 2013 02:20:12 +0900 Subject: Added edged test cases for templating with escpaed doubled braces. --- pyramid/scaffolds/template.py | 6 +++--- pyramid/tests/test_scaffolds/test_template.py | 12 +++++++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/pyramid/scaffolds/template.py b/pyramid/scaffolds/template.py index b587adb73..d88f5b2a6 100644 --- a/pyramid/scaffolds/template.py +++ b/pyramid/scaffolds/template.py @@ -149,15 +149,15 @@ def substitute_double_braces(content, values): value = match.group('braced').strip() return values[value] return double_brace_pattern.sub(double_bracerepl, content) - -escaped_double_brace_pattern = re.compile(r'\\{\\{(?P.*?)\\}\\}') + +escaped_double_brace_pattern = re.compile(r'\\{\\{(?P[^\\]*?)\\}\\}') def substitute_escaped_double_braces(content): def escaped_double_bracerepl(match): value = match.group('escape_braced').strip() return "{{%(value)s}}" % locals() return escaped_double_brace_pattern.sub(escaped_double_bracerepl, content) - + def _add_except(exc, info): # pragma: no cover if not hasattr(exc, 'args') or exc.args is None: return diff --git a/pyramid/tests/test_scaffolds/test_template.py b/pyramid/tests/test_scaffolds/test_template.py index da6caffb9..2e961c516 100644 --- a/pyramid/tests/test_scaffolds/test_template.py +++ b/pyramid/tests/test_scaffolds/test_template.py @@ -37,11 +37,21 @@ class TestTemplate(unittest.TestCase): result = inst.render_template('{{a}}', {'a':None}) self.assertEqual(result, b'') - def test_render_template_with_escaped_double_quotes(self): + def test_render_template_with_escaped_double_braces(self): inst = self._makeOne() result = inst.render_template('{{a}} {{b}} \{\{a\}\} \{\{c\}\}', {'a':'1', 'b':'2'}) self.assertEqual(result, bytes_('1 2 {{a}} {{c}}')) + def test_render_template_with_breaking_escaped_braces(self): + inst = self._makeOne() + result = inst.render_template('{{a}} {{b}} \{\{a\} \{b\}\}', {'a':'1', 'b':'2'}) + self.assertEqual(result, bytes_('1 2 \{\{a\} \{b\}\}')) + + def test_render_template_with_escaped_single_braces(self): + inst = self._makeOne() + result = inst.render_template('{{a}} {{b}} \{a\} \{b', {'a':'1', 'b':'2'}) + self.assertEqual(result, bytes_('1 2 \{a\} \{b')) + def test_module_dir(self): import sys import pkg_resources -- cgit v1.2.3