File tree Expand file tree Collapse file tree
main/java/com/hubspot/jinjava/tree
test/java/com/hubspot/jinjava Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1717
1818import com .hubspot .jinjava .interpret .DeferredValueException ;
1919import com .hubspot .jinjava .interpret .JinjavaInterpreter ;
20+ import com .hubspot .jinjava .interpret .TemplateError ;
2021import com .hubspot .jinjava .lib .expression .DefaultExpressionStrategy ;
2122import com .hubspot .jinjava .lib .expression .ExpressionStrategy ;
2223import com .hubspot .jinjava .tree .output .OutputNode ;
@@ -49,6 +50,11 @@ public OutputNode render(JinjavaInterpreter interpreter) {
4950 return expressionStrategy .interpretOutput (master , interpreter );
5051 } catch (DeferredValueException e ) {
5152 interpreter .getContext ().handleDeferredNode (this );
53+ if (interpreter .getConfig ().getExecutionMode ().useEagerParser ()) {
54+ interpreter .addError (
55+ TemplateError .fromException (e , getLineNumber (), getStartPosition ())
56+ );
57+ }
5258 return new RenderedOutputNode (master .getImage ());
5359 } finally {
5460 postProcess (interpreter );
Original file line number Diff line number Diff line change 2121import com .hubspot .jinjava .interpret .InvalidInputException ;
2222import com .hubspot .jinjava .interpret .JinjavaInterpreter ;
2323import com .hubspot .jinjava .interpret .OutputTooBigException ;
24+ import com .hubspot .jinjava .interpret .TemplateError ;
2425import com .hubspot .jinjava .lib .tag .FlexibleTag ;
2526import com .hubspot .jinjava .lib .tag .Tag ;
2627import com .hubspot .jinjava .tree .output .OutputNode ;
@@ -58,6 +59,11 @@ public OutputNode render(JinjavaInterpreter interpreter) {
5859 return tag .interpretOutput (this , interpreter );
5960 } catch (DeferredValueException e ) {
6061 interpreter .getContext ().handleDeferredNode (this );
62+ if (interpreter .getConfig ().getExecutionMode ().useEagerParser ()) {
63+ interpreter .addError (
64+ TemplateError .fromException (e , getLineNumber (), getStartPosition ())
65+ );
66+ }
6167 return new RenderedOutputNode (reconstructImage ());
6268 } catch (
6369 InterpretException
Original file line number Diff line number Diff line change 99import com .hubspot .jinjava .interpret .Context ;
1010import com .hubspot .jinjava .interpret .DeferredValue ;
1111import com .hubspot .jinjava .interpret .JinjavaInterpreter ;
12+ import com .hubspot .jinjava .interpret .TemplateError .ErrorType ;
1213import com .hubspot .jinjava .loader .LocationResolver ;
1314import com .hubspot .jinjava .loader .RelativePathResolver ;
1415import com .hubspot .jinjava .loader .ResourceLocator ;
@@ -1591,6 +1592,14 @@ public void itFailsOnModificationInAliasedMacro() {
15911592 interpreter .render (input );
15921593 // We don't support this
15931594 assertThat (interpreter .getContext ().getDeferredNodes ()).isNotEmpty ();
1595+ assertThat (interpreter .getErrors ())
1596+ .singleElement ()
1597+ .satisfies (error -> {
1598+ assertThat (error .getSeverity ()).isEqualTo (ErrorType .FATAL );
1599+ assertThat (error .getMessage ())
1600+ .contains ("Cannot modify temporary import alias outside of import tag" );
1601+ });
1602+ interpreter .removeLastError ();
15941603 }
15951604
15961605 @ Test
Original file line number Diff line number Diff line change 1010import com .hubspot .jinjava .interpret .Context ;
1111import com .hubspot .jinjava .interpret .DeferredValue ;
1212import com .hubspot .jinjava .interpret .JinjavaInterpreter ;
13+ import com .hubspot .jinjava .interpret .TemplateError ;
14+ import com .hubspot .jinjava .interpret .TemplateError .ErrorType ;
1315import com .hubspot .jinjava .mode .EagerExecutionMode ;
1416import com .hubspot .jinjava .random .RandomNumberGeneratorStrategy ;
1517import com .hubspot .jinjava .testobjects .EagerAstDotTestObjects ;
@@ -74,5 +76,8 @@ public void itDefersNodeWhenNestedDeferredMapDotThrowsDeferredValueException() {
7476 assertThat (interpreter .render ("{{ foo_map.bar.deferred }}" ))
7577 .isEqualTo ("{{ foo_map.bar.deferred }}" );
7678 assertThat (interpreter .getContext ().getDeferredNodes ()).isNotEmpty ();
79+ assertThat (interpreter .getErrors ())
80+ .extracting (TemplateError ::getSeverity )
81+ .containsExactly (ErrorType .FATAL );
7782 }
7883}
Original file line number Diff line number Diff line change 77import com .hubspot .jinjava .LegacyOverrides ;
88import com .hubspot .jinjava .interpret .DeferredValue ;
99import com .hubspot .jinjava .interpret .JinjavaInterpreter ;
10+ import com .hubspot .jinjava .interpret .TemplateError ;
1011import com .hubspot .jinjava .interpret .TemplateError .ErrorReason ;
12+ import com .hubspot .jinjava .interpret .TemplateError .ErrorType ;
1113import com .hubspot .jinjava .lib .tag .DoTagTest ;
1214import com .hubspot .jinjava .lib .tag .Tag ;
1315import com .hubspot .jinjava .mode .EagerExecutionMode ;
@@ -65,8 +67,11 @@ public void itLimitsLength() {
6567 }
6668 context .setDeferredExecutionMode (true );
6769 interpreter .render (String .format ("{%% do deferred.append('%s') %%}" , tooLong ));
68- assertThat (interpreter .getErrors ()).hasSize (1 );
69- assertThat (interpreter .getErrors ().get (0 ).getReason ())
70- .isEqualTo (ErrorReason .OUTPUT_TOO_BIG );
70+ assertThat (interpreter .getErrors ())
71+ .extracting (TemplateError ::getReason )
72+ .containsExactly (ErrorReason .EXCEPTION , ErrorReason .OUTPUT_TOO_BIG );
73+ assertThat (interpreter .getErrors ().get (0 ).getSeverity ()).isEqualTo (ErrorType .FATAL );
74+ assertThat (interpreter .getErrors ().get (0 ).getMessage ())
75+ .contains ("Can not convert deferred result to string" );
7176 }
7277}
Original file line number Diff line number Diff line change 66import com .hubspot .jinjava .ExpectedNodeInterpreter ;
77import com .hubspot .jinjava .interpret .DeferredValue ;
88import com .hubspot .jinjava .interpret .JinjavaInterpreter ;
9+ import com .hubspot .jinjava .interpret .TemplateError ;
910import com .hubspot .jinjava .interpret .TemplateError .ErrorReason ;
11+ import com .hubspot .jinjava .interpret .TemplateError .ErrorType ;
1012import com .hubspot .jinjava .lib .tag .SetTagTest ;
1113import com .hubspot .jinjava .mode .EagerExecutionMode ;
1214import com .hubspot .jinjava .objects .Namespace ;
@@ -165,9 +167,12 @@ public void itLimitsLength() {
165167 }
166168 context .setDeferredExecutionMode (true );
167169 interpreter .render (String .format ("{%% set deferred = '%s' %%}" , tooLong ));
168- assertThat (interpreter .getErrors ()).hasSize (1 );
169- assertThat (interpreter .getErrors ().get (0 ).getReason ())
170- .isEqualTo (ErrorReason .OUTPUT_TOO_BIG );
170+ assertThat (interpreter .getErrors ())
171+ .extracting (TemplateError ::getReason )
172+ .containsExactly (ErrorReason .EXCEPTION , ErrorReason .OUTPUT_TOO_BIG );
173+ assertThat (interpreter .getErrors ().get (0 ).getSeverity ()).isEqualTo (ErrorType .FATAL );
174+ assertThat (interpreter .getErrors ().get (0 ).getMessage ())
175+ .contains ("Output too big for eager execution" );
171176 }
172177
173178 @ Test
You can’t perform that action at this time.
0 commit comments