From: Armin Ronacher Date: Fri, 6 Jan 2017 20:48:53 +0000 (+0100) Subject: Added a test for macro scoping in loops X-Git-Tag: 2.9~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=894ddb1b36d3fe3904db794fad4a4392f94804c4;p=thirdparty%2Fjinja.git Added a test for macro scoping in loops --- diff --git a/tests/test_regression.py b/tests/test_regression.py index adc651e9..4deaebe9 100644 --- a/tests/test_regression.py +++ b/tests/test_regression.py @@ -335,3 +335,20 @@ class TestBug(object): template = "{% macro m() %}{% endmacro %}" template += "{% autoescape true %}{{ m() }}{% endautoescape %}" assert env.from_string(template).render() + + def test_macro_scoping(self, env): + tmpl = env.from_string(''' + {% set n=[1,2,3,4,5] %} + {% for n in [[1,2,3], [3,4,5], [5,6,7]] %} + + {% macro x(l) %} + {{ l.pop() }} + {% if l %}{{ x(l) }}{% endif %} + {% endmacro %} + + {{ x(n) }} + + {% endfor %} + ''') + assert list(map(int, tmpl.render().split())) == \ + [3, 2, 1, 5, 4, 3, 7, 6, 5]