summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Ronacher <armin.ronacher@active-4.com>2013-05-19 13:23:57 +0100
committerArmin Ronacher <armin.ronacher@active-4.com>2013-05-19 13:23:57 +0100
commit400f973c8d0b86f354d7f68ef70e05cd1b6a91c2 (patch)
tree285119b3f79d177a4a7665337c1d78e49eda8186
parent9417d013111e8e7ab1276e0ce5c271d24e002c4b (diff)
downloadjinja2-400f973c8d0b86f354d7f68ef70e05cd1b6a91c2.tar.gz
Fixed #79
-rw-r--r--jinja2/compiler.py3
-rw-r--r--jinja2/testsuite/inheritance.py27
2 files changed, 27 insertions, 3 deletions
diff --git a/jinja2/compiler.py b/jinja2/compiler.py
index 02df8c5..10c3fef 100644
--- a/jinja2/compiler.py
+++ b/jinja2/compiler.py
@@ -892,12 +892,13 @@ class CodeGenerator(NodeVisitor):
self.indent()
self.writeline('raise TemplateRuntimeError(%r)' %
'extended multiple times')
- self.outdent()
# if we have a known extends already we don't need that code here
# as we know that the template execution will end here.
if self.has_known_extends:
raise CompilerExit()
+ else:
+ self.outdent()
self.writeline('parent_template = environment.get_template(', node)
self.visit(node.template, frame)
diff --git a/jinja2/testsuite/inheritance.py b/jinja2/testsuite/inheritance.py
index 7909b03..a5b9465 100644
--- a/jinja2/testsuite/inheritance.py
+++ b/jinja2/testsuite/inheritance.py
@@ -12,7 +12,7 @@ import unittest
from jinja2.testsuite import JinjaTestCase
-from jinja2 import Environment, DictLoader
+from jinja2 import Environment, DictLoader, TemplateError
LAYOUTTEMPLATE = '''\
@@ -53,13 +53,27 @@ WORKINGTEMPLATE = '''\
{% endblock %}
'''
+DOUBLEEXTENDS = '''\
+{% extends "layout" %}
+{% extends "layout" %}
+{% block block1 %}
+ {% if false %}
+ {% block block2 %}
+ this should workd
+ {% endblock %}
+ {% endif %}
+{% endblock %}
+'''
+
+
env = Environment(loader=DictLoader({
'layout': LAYOUTTEMPLATE,
'level1': LEVEL1TEMPLATE,
'level2': LEVEL2TEMPLATE,
'level3': LEVEL3TEMPLATE,
'level4': LEVEL4TEMPLATE,
- 'working': WORKINGTEMPLATE
+ 'working': WORKINGTEMPLATE,
+ 'doublee': DOUBLEEXTENDS,
}), trim_blocks=True)
@@ -219,6 +233,15 @@ class BugFixTestCase(JinjaTestCase):
'''
})).get_template("test.html").render().split() == [u'outer_box', u'my_macro']
+ def test_double_extends(self):
+ """Ensures that a template with more than 1 {% extends ... %} usage
+ raises a ``TemplateError``.
+ """
+ try:
+ tmpl = env.get_template('doublee')
+ except Exception, e:
+ assert isinstance(e, TemplateError)
+
def suite():
suite = unittest.TestSuite()