Skip to content

Commit de36db9

Browse files
committed
Sync up current_path with CurrentPathStack when starting render
1 parent 74d9a4d commit de36db9

4 files changed

Lines changed: 12 additions & 4 deletions

File tree

src/main/java/com/hubspot/jinjava/Jinjava.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import com.hubspot.jinjava.lib.fn.ELFunctionDefinition;
3636
import com.hubspot.jinjava.lib.tag.Tag;
3737
import com.hubspot.jinjava.loader.ClasspathResourceLocator;
38+
import com.hubspot.jinjava.loader.RelativePathResolver;
3839
import com.hubspot.jinjava.loader.ResourceLocator;
3940
import de.odysseus.el.ExpressionFactoryImpl;
4041
import de.odysseus.el.misc.TypeConverter;
@@ -244,6 +245,10 @@ public RenderResult renderForResult(
244245
} else {
245246
context = new Context(copyGlobalContext(), bindings, renderConfig.getDisabled());
246247
}
248+
Object currentPath = context.get(RelativePathResolver.CURRENT_PATH_CONTEXT_KEY);
249+
if (currentPath != null) {
250+
context.getCurrentPathStack().pushWithoutCycleCheck(currentPath.toString(), 0, 0);
251+
}
247252

248253
JinjavaInterpreter interpreter = globalConfig
249254
.getInterpreterFactory()
@@ -290,6 +295,9 @@ public RenderResult renderForResult(
290295
);
291296
} finally {
292297
globalContext.reset();
298+
if (currentPath != null) {
299+
context.getCurrentPathStack().pop();
300+
}
293301
JinjavaInterpreter.popCurrent();
294302
}
295303
}

src/test/java/com/hubspot/jinjava/EagerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,7 @@ public void itDefersMacroInIf() {
625625

626626
@Test
627627
public void itPutsDeferredImportedMacroInOutput() {
628-
expectedTemplateInterpreter.assertExpectedOutput(
628+
expectedTemplateInterpreter.assertExpectedOutputNonIdempotent(
629629
"puts-deferred-imported-macro-in-output"
630630
);
631631
}
@@ -643,7 +643,7 @@ public void itPutsDeferredImportedMacroInOutputSecondPass() {
643643

644644
@Test
645645
public void itPutsDeferredFromedMacroInOutput() {
646-
expectedTemplateInterpreter.assertExpectedOutput(
646+
expectedTemplateInterpreter.assertExpectedOutputNonIdempotent(
647647
"puts-deferred-fromed-macro-in-output"
648648
);
649649
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{% set myname = deferred + 3 %}{% set __macro_getPath_331491059_temp_variable_1__ %}Hello {{ myname }}{% endset %}{% print __macro_getPath_331491059_temp_variable_1__ %}
1+
{% set myname = deferred + 3 %}{% set __macro_getPath_331491059_temp_variable_1__ %}{% set current_path = 'simple-with-call.jinja' %}Hello {{ myname }}{% set current_path = '' %}{% endset %}{% print __macro_getPath_331491059_temp_variable_1__ %}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{% set myname = deferred + 3 %}{% set __macro_getPath_331491059_temp_variable_1__ %}Hello {{ myname }}{% endset %}{% print __macro_getPath_331491059_temp_variable_1__ %}
1+
{% set myname = deferred + 3 %}{% set __macro_getPath_331491059_temp_variable_1__ %}{% set current_path = 'simple-with-call.jinja' %}Hello {{ myname }}{% set current_path = '' %}{% endset %}{% print __macro_getPath_331491059_temp_variable_1__ %}

0 commit comments

Comments
 (0)