Added testcase for a bug
authorArmin Ronacher <armin.ronacher@active-4.com>
Tue, 17 Mar 2009 23:59:32 +0000 (00:59 +0100)
committerArmin Ronacher <armin.ronacher@active-4.com>
Tue, 17 Mar 2009 23:59:32 +0000 (00:59 +0100)
--HG--
branch : trunk

jinja2/compiler.py
tests/test_old_bugs.py

index 6b9c786fa880a898ba956aa62bd1903e77a63ba2..36f55a907957cbe65408b60133ba93645bd34da1 100644 (file)
@@ -595,7 +595,9 @@ class CodeGenerator(NodeVisitor):
         # variables that are undeclared (accessed before declaration) and
         # declared locally *and* part of an outside scope raise a template
         # assertion error. Reason: we can't generate reasonable code from
-        # it without aliasing all the variables.  XXX: alias them ^^
+        # it without aliasing all the variables.
+        # this could be fixed in Python 3 where we have the nonlocal
+        # keyword or if we switch to bytecode generation
         overriden_closure_vars = (
             func_frame.identifiers.undeclared &
             func_frame.identifiers.declared &
index a30c90922d580b85972bb594f786cf4b431d04ea..687d962e147b4d32401ee505520c68e7e32995b2 100644 (file)
@@ -33,3 +33,23 @@ def test_extends_output_bugs():
 def test_urlize_filter_escaping(env):
     tmpl = env.from_string('{{ "http://www.example.org/<foo"|urlize }}')
     assert tmpl.render() == '<a href="http://www.example.org/&lt;foo">http://www.example.org/&lt;foo</a>'
+
+
+def test_loop_call_loop(env):
+    tmpl = env.from_string('''
+
+    {% macro test() %}
+        {{ caller() }}
+    {% endmacro %}
+
+    {% for num1 in range(5) %}
+        {% call test() %}
+            {% for num2 in range(10) %}
+                {{ loop.index }}
+            {% endfor %}
+        {% endcall %}
+    {% endfor %}
+
+    ''')
+
+    assert tmpl.render() == ''