diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/IncludeTag.java b/src/main/java/com/hubspot/jinjava/lib/tag/IncludeTag.java index 5c4a7887e..d8b985c98 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/IncludeTag.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/IncludeTag.java @@ -106,7 +106,7 @@ public String interpret(TagNode tagNode, JinjavaInterpreter interpreter) { .getCurrentPathStack() .push(templateFile, interpreter.getLineNumber(), interpreter.getPosition()); - return interpreter.render(node); + return interpreter.render(node, false); } catch (IOException e) { throw new InterpretException( e.getMessage(), diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/IncludeTagTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/IncludeTagTest.java index b7e13aa5c..fb6e9dde4 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/IncludeTagTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/IncludeTagTest.java @@ -188,4 +188,16 @@ public void itSetsErrorLineNumbersCorrectlyTwoLevelsDeep() throws IOException { assertThat(result.getErrors().get(0).getSourceTemplate().get()) .isEqualTo("tags/includetag/errors/error.html"); } + + @Test + public void itAvoidsTagCycleExceptionInsideExtendedFiles() throws Exception { + String result = jinjava.render( + Resources.toString( + Resources.getResource("tags/extendstag/tagcycleexception/template-a.jinja"), + StandardCharsets.UTF_8 + ), + new HashMap<>() + ); + assertThat(result).isEqualTo("Extended text, will be rendered"); + } } diff --git a/src/test/resources/tags/extendstag/tagcycleexception/template-a.jinja b/src/test/resources/tags/extendstag/tagcycleexception/template-a.jinja new file mode 100644 index 000000000..ca27bd9d2 --- /dev/null +++ b/src/test/resources/tags/extendstag/tagcycleexception/template-a.jinja @@ -0,0 +1,2 @@ +{% extends 'tags/extendstag/tagcycleexception/template-b.jinja' %} +{% extends 'tags/extendstag/tagcycleexception/template-d.jinja' %} \ No newline at end of file diff --git a/src/test/resources/tags/extendstag/tagcycleexception/template-b.jinja b/src/test/resources/tags/extendstag/tagcycleexception/template-b.jinja new file mode 100644 index 000000000..031f4c6fb --- /dev/null +++ b/src/test/resources/tags/extendstag/tagcycleexception/template-b.jinja @@ -0,0 +1 @@ +{% import 'tags/extendstag/tagcycleexception/template-c.jinja' %} \ No newline at end of file diff --git a/src/test/resources/tags/extendstag/tagcycleexception/template-c.jinja b/src/test/resources/tags/extendstag/tagcycleexception/template-c.jinja new file mode 100644 index 000000000..e2c00415e --- /dev/null +++ b/src/test/resources/tags/extendstag/tagcycleexception/template-c.jinja @@ -0,0 +1 @@ +Included text, won't be rendered \ No newline at end of file diff --git a/src/test/resources/tags/extendstag/tagcycleexception/template-d.jinja b/src/test/resources/tags/extendstag/tagcycleexception/template-d.jinja new file mode 100644 index 000000000..aa17aa787 --- /dev/null +++ b/src/test/resources/tags/extendstag/tagcycleexception/template-d.jinja @@ -0,0 +1 @@ +Extended text, will be rendered \ No newline at end of file