From f10a072f2eff8a7da2b9237dde848b202088374b Mon Sep 17 00:00:00 2001 From: jasmith-hs Date: Wed, 4 Mar 2026 11:16:32 -0500 Subject: [PATCH] Default all current LegacyOverrides to on --- .../com/hubspot/jinjava/JinjavaConfig.java | 2 +- .../jinjava/el/ExtendedSyntaxBuilderTest.java | 44 +++++++++++------ .../interpret/JinjavaInterpreterTest.java | 12 +++++ .../lib/filter/PrettyPrintFilterTest.java | 6 +-- .../jinjava/lib/tag/ValidationModeTest.java | 47 +++++++++---------- .../lib/tag/eager/EagerTagDecoratorTest.java | 8 ++-- 6 files changed, 73 insertions(+), 46 deletions(-) diff --git a/src/main/java/com/hubspot/jinjava/JinjavaConfig.java b/src/main/java/com/hubspot/jinjava/JinjavaConfig.java index 4f1887272..b7ed9baca 100644 --- a/src/main/java/com/hubspot/jinjava/JinjavaConfig.java +++ b/src/main/java/com/hubspot/jinjava/JinjavaConfig.java @@ -180,7 +180,7 @@ default ExecutionMode getExecutionMode() { @Value.Default default LegacyOverrides getLegacyOverrides() { - return LegacyOverrides.NONE; + return LegacyOverrides.THREE_POINT_0; } @Value.Default diff --git a/src/test/java/com/hubspot/jinjava/el/ExtendedSyntaxBuilderTest.java b/src/test/java/com/hubspot/jinjava/el/ExtendedSyntaxBuilderTest.java index f0834187c..ace3497b3 100644 --- a/src/test/java/com/hubspot/jinjava/el/ExtendedSyntaxBuilderTest.java +++ b/src/test/java/com/hubspot/jinjava/el/ExtendedSyntaxBuilderTest.java @@ -7,6 +7,7 @@ import com.google.common.io.Resources; import com.hubspot.jinjava.Jinjava; import com.hubspot.jinjava.JinjavaConfig; +import com.hubspot.jinjava.LegacyOverrides; import com.hubspot.jinjava.interpret.Context; import com.hubspot.jinjava.interpret.IndexOutOfRangeException; import com.hubspot.jinjava.interpret.JinjavaInterpreter; @@ -188,22 +189,35 @@ public void literalTuple() { @Test public void mapLiteral() { - context.put("foo", "bar"); - assertThat((Map) val("{}")).isEmpty(); - Map map = (Map) val( - "{foo: foo, \"foo2\": foo, foo3: 123, foo4: 'string', foo5: {}, foo6: [1, 2]}" - ); - assertThat(map) - .contains( - entry("foo", "bar"), - entry("foo2", "bar"), - entry("foo3", 123L), - entry("foo4", "string"), - entry("foo6", Arrays.asList(1L, 2L)) + interpreter = + new Jinjava( + JinjavaConfig + .builder() + .withMaxOutputSize(MAX_STRING_LENGTH) + .withLegacyOverrides(LegacyOverrides.THREE_POINT_0.withEvaluateMapKeys(false)) + .build() + ) + .newInterpreter(); + try (var a = JinjavaInterpreter.closeablePushCurrent(interpreter).get()) { + interpreter.getContext().put("foo", "bar"); + assertThat((Map) val("{}")).isEmpty(); + Map map = (Map) val( + "{foo: foo, \"foo2\": foo, foo3: 123, foo4: 'string', foo5: {}, foo6: [1, 2]}" ); - - assertThat((Map) val("{\"address\":\"123 Main - Boston, MA 02111\"}")) - .contains(entry("address", "123 Main - Boston, MA 02111")); + assertThat(map) + .contains( + entry("foo", "bar"), + entry("foo2", "bar"), + entry("foo3", 123L), + entry("foo4", "string"), + entry("foo6", Arrays.asList(1L, 2L)) + ); + + assertThat( + (Map) val("{\"address\":\"123 Main - Boston, MA 02111\"}") + ) + .contains(entry("address", "123 Main - Boston, MA 02111")); + } } @Test diff --git a/src/test/java/com/hubspot/jinjava/interpret/JinjavaInterpreterTest.java b/src/test/java/com/hubspot/jinjava/interpret/JinjavaInterpreterTest.java index 5fbcc9dfd..eeb8c53e9 100644 --- a/src/test/java/com/hubspot/jinjava/interpret/JinjavaInterpreterTest.java +++ b/src/test/java/com/hubspot/jinjava/interpret/JinjavaInterpreterTest.java @@ -8,6 +8,7 @@ import com.google.common.collect.Lists; import com.hubspot.jinjava.Jinjava; import com.hubspot.jinjava.JinjavaConfig; +import com.hubspot.jinjava.LegacyOverrides; import com.hubspot.jinjava.features.FeatureConfig; import com.hubspot.jinjava.features.FeatureStrategies; import com.hubspot.jinjava.interpret.JinjavaInterpreter.InterpreterScopeClosable; @@ -363,6 +364,17 @@ public void itInterpretsWhitespaceControl() { @Test public void itInterpretsEmptyExpressions() { + jinjava = + new Jinjava( + JinjavaConfig + .builder() + .withTimeZone(ZoneId.of("America/New_York")) + .withLegacyOverrides( + LegacyOverrides.THREE_POINT_0.withParseWhitespaceControlStrictly(false) + ) + .build() + ); + interpreter = jinjava.newInterpreter(); assertThat(interpreter.render("{{}}")).isEqualTo(""); } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/PrettyPrintFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/PrettyPrintFilterTest.java index 2f1c1195b..628c4dddc 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/PrettyPrintFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/PrettyPrintFilterTest.java @@ -71,9 +71,9 @@ public void ppObject() { "{%% raw %%}(MyClass: {\n" + " "foo" : "%s",\n" + " "bar" : %d,\n" + - " "nestedClass" : {\n" + - " "fooField" : "%s",\n" + - " "barField" : %d\n" + + " "nested_class" : {\n" + + " "foo_field" : "%s",\n" + + " "bar_field" : %d\n" + " }\n" + "}){%% endraw %%}", myClass.getFoo(), diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/ValidationModeTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/ValidationModeTest.java index d560a7fd4..bce403426 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/ValidationModeTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/ValidationModeTest.java @@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableList; import com.hubspot.jinjava.Jinjava; import com.hubspot.jinjava.JinjavaConfig; +import com.hubspot.jinjava.LegacyOverrides; import com.hubspot.jinjava.interpret.Context; import com.hubspot.jinjava.interpret.JinjavaInterpreter; import com.hubspot.jinjava.lib.filter.Filter; @@ -17,7 +18,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -81,15 +81,12 @@ public void setup() { new JinjavaInterpreter( jinjava, context, - JinjavaConfig.newBuilder().withValidationMode(true).build() + JinjavaConfig + .newBuilder() + .withLegacyOverrides(LegacyOverrides.NONE) + .withValidationMode(true) + .build() ); - - JinjavaInterpreter.pushCurrent(interpreter); - } - - @After - public void tearDown() { - JinjavaInterpreter.popCurrent(); } @Test @@ -278,17 +275,19 @@ public void itDoesNotExecuteMacrosInValidatedBlocks() { interpreter.getContext() ); interpreter.getContext().addGlobalMacro(macro); - String template = "{{ hello() }}" + "{% if false %} " + " {{ hello() }}" + "{% endif %}"; - assertThat(interpreter.getErrors()).isEmpty(); - assertThat(interpreter.render(template).trim()).isEqualTo("hello"); - assertThat(macro.getInvocationCount()).isEqualTo(1); - - assertThat(validatingInterpreter.render(template).trim()).isEqualTo("hello"); - assertThat(macro.getInvocationCount()).isEqualTo(3); - assertThat(validatingInterpreter.getErrors()).isEmpty(); + try (var a = JinjavaInterpreter.closeablePushCurrent(interpreter).get()) { + assertThat(interpreter.getErrors()).isEmpty(); + assertThat(interpreter.render(template).trim()).isEqualTo("hello"); + assertThat(macro.getInvocationCount()).isEqualTo(1); + } + try (var a = JinjavaInterpreter.closeablePushCurrent(validatingInterpreter).get()) { + assertThat(validatingInterpreter.render(template).trim()).isEqualTo("hello"); + assertThat(macro.getInvocationCount()).isEqualTo(3); + assertThat(validatingInterpreter.getErrors()).isEmpty(); + } } @Test @@ -333,13 +332,13 @@ public void itDoesNotExecuteFiltersInValidatedBlocks() { assertThat(result).isEqualTo("10"); assertThat(validationFilter.getExecutionCount()).isEqualTo(1); - JinjavaInterpreter.pushCurrent(validatingInterpreter); - result = validatingInterpreter.render(template).trim(); + try (var a = JinjavaInterpreter.closeablePushCurrent(validatingInterpreter).get()) { + result = validatingInterpreter.render(template).trim(); - assertThat(validatingInterpreter.getErrors().size()).isEqualTo(1); - assertThat(validatingInterpreter.getErrors().get(0).getMessage()).contains("hey("); - assertThat(result).isEqualTo("10"); - assertThat(validationFilter.getExecutionCount()).isEqualTo(2); - JinjavaInterpreter.popCurrent(); + assertThat(validatingInterpreter.getErrors().size()).isEqualTo(1); + assertThat(validatingInterpreter.getErrors().get(0).getMessage()).contains("hey("); + assertThat(result).isEqualTo("10"); + assertThat(validationFilter.getExecutionCount()).isEqualTo(2); + } } } diff --git a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerTagDecoratorTest.java b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerTagDecoratorTest.java index 4554108d0..6383457cd 100644 --- a/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerTagDecoratorTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/tag/eager/EagerTagDecoratorTest.java @@ -2,7 +2,9 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import com.hubspot.jinjava.BaseInterpretingTest; import com.hubspot.jinjava.JinjavaConfig; @@ -136,7 +138,7 @@ public void itPutsOnContextInChildContext() { public void itModifiesContextInChildContext() { context.put("foo", new ArrayList<>()); assertThat(interpreter.render("{{ modify_context('foo', 'bar') }}{{ foo }}")) - .isEqualTo("[bar]"); + .isEqualTo("['bar']"); } @Test @@ -145,7 +147,7 @@ public void itDoesntModifyContextWhenResultIsDeferred() { assertThat( interpreter.render("{{ modify_context('foo', 'bar') ~ deferred }}{{ foo }}") ) - .isEqualTo("{{ null ~ deferred }}[bar]"); + .isEqualTo("{{ null ~ deferred }}['bar']"); } public static void addToContext(String key, Object value) {