summaryrefslogtreecommitdiff
path: root/tests/template_tests/syntax_tests/test_include.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/template_tests/syntax_tests/test_include.py')
-rw-r--r--tests/template_tests/syntax_tests/test_include.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/template_tests/syntax_tests/test_include.py b/tests/template_tests/syntax_tests/test_include.py
index 904209ea8b..5f92efc05a 100644
--- a/tests/template_tests/syntax_tests/test_include.py
+++ b/tests/template_tests/syntax_tests/test_include.py
@@ -308,3 +308,23 @@ class IncludeTests(SimpleTestCase):
"Recursion! A1 Recursion! B1 B2 B3 Recursion! C1",
t.render(Context({'comments': comments})).replace(' ', '').replace('\n', ' ').strip(),
)
+
+ def test_include_cache(self):
+ """
+ {% include %} keeps resolved templates constant (#27974). The
+ CounterNode object in the {% counter %} template tag is created once
+ if caching works properly. Each iteration increases the counter instead
+ of restarting it.
+
+ This works as a regression test only if the cached loader
+ isn't used, so the @setup decorator isn't used.
+ """
+ engine = Engine(loaders=[
+ ('django.template.loaders.locmem.Loader', {
+ 'template': '{% for x in vars %}{% include "include" %}{% endfor %}',
+ 'include': '{% include "next" %}',
+ 'next': '{% load custom %}{% counter %}'
+ }),
+ ], libraries={'custom': 'template_tests.templatetags.custom'})
+ output = engine.render_to_string('template', dict(vars=range(9)))
+ self.assertEqual(output, '012345678')