Skip to content

Commit be95382

Browse files
committed
Add failing test to demonstrate issue with values not being resolved properly
when there are values used in blocks that have been deferred in their extends roots
1 parent a6c5d0b commit be95382

8 files changed

Lines changed: 157 additions & 4 deletions

File tree

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1753,4 +1753,22 @@ public void itHandlesDeferredValueInRenderFilter() {
17531753
"handles-deferred-value-in-render-filter/test"
17541754
);
17551755
}
1756+
1757+
@Test
1758+
public void itHandlesDeferredUsedInMultipleBlockLevels() {
1759+
expectedTemplateInterpreter.assertExpectedOutputNonIdempotent(
1760+
"handles-deferred-used-in-multiple-block-levels/test"
1761+
);
1762+
}
1763+
1764+
@Test
1765+
public void itHandlesDeferredUsedInMultipleBlockLevelsSecondPass() {
1766+
localContext.put("deferred", "resolved");
1767+
expectedTemplateInterpreter.assertExpectedOutput(
1768+
"handles-deferred-used-in-multiple-block-levels/test.expected"
1769+
);
1770+
expectedTemplateInterpreter.assertExpectedNonEagerOutput(
1771+
"handles-deferred-used-in-multiple-block-levels/test.expected"
1772+
);
1773+
}
17561774
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{% set tracker_base = '1_base' %}
2+
3+
tracker_base is: {{ tracker_base }}? {{ tracker_base == '1_base' }}
4+
tracker_middle is: {{ tracker_middle }}? {{ tracker_middle == 'resolved' }}
5+
tracker_test is: {{ tracker_test }}? {{ tracker_test == 'resolved' }}
6+
-----Pre-First-----
7+
{% block first -%}
8+
tracker_base is: {{ tracker_base }}? {{ tracker_base == 'resolved' }}
9+
tracker_middle is: {{ tracker_middle }}? {{ tracker_middle == 'resolved' }}
10+
tracker_test is: {{ tracker_test }}? {{ tracker_test == 'resolved' }}
11+
{%- endblock %}
12+
-----Post-First-----
13+
tracker_base is: {{ tracker_base }}? {{ tracker_base == '1_base' }}
14+
tracker_middle is: {{ tracker_middle }}? {{ tracker_middle == 'resolved' }}
15+
tracker_test is: {{ tracker_test }}? {{ tracker_test == 'resolved' }}
16+
-----Pre-Second-----
17+
{% block second -%}
18+
tracker_base is: {{ tracker_base }}? {{ tracker_base == 'resolved' }}
19+
tracker_middle is: {{ tracker_middle }}? {{ tracker_middle == 'resolved' }}
20+
tracker_test is: {{ tracker_test }}? {{ tracker_test == 'resolved' }}
21+
{%- endblock %}
22+
-----Post-Second-----
23+
Deferring tracker base.{# This message WILL show up in final output #}
24+
{% set tracker_base = deferred %}
25+
tracker_base is: {{ tracker_base }}? {{ tracker_base == 'resolved' }}
26+
tracker_middle is: {{ tracker_middle }}? {{ tracker_middle == 'resolved' }}
27+
tracker_test is: {{ tracker_test }}? {{ tracker_test == 'resolved' }}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{% extends '../../eager/handles-deferred-used-in-multiple-block-levels/base.jinja' %}
2+
{% set tracker_middle = '2_middle' %}
3+
{% block first %}
4+
I WON'T SHOW UP
5+
{% endblock %}
6+
7+
{% block second %}
8+
tracker_base is: {{ tracker_base }}? {{ tracker_base == 'resolved' }}
9+
tracker_middle is: {{ tracker_middle }}? {{ tracker_middle == 'resolved' }}
10+
tracker_test is: {{ tracker_test }}? {{ tracker_test == 'resolved' }}
11+
{% endblock %}
12+
Deferring tracker middle.{# This message will not show up in final output #}
13+
{% set tracker_middle = deferred %}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
tracker_base is: 1_base? true
2+
tracker_middle is: resolved? true
3+
tracker_test is: resolved? true
4+
-----Pre-First-----
5+
6+
tracker_base is: resolved? true
7+
tracker_middle is: resolved? true
8+
tracker_test is: resolved? true
9+
10+
-----Post-First-----
11+
tracker_base is: 1_base? true
12+
tracker_middle is: resolved? true
13+
tracker_test is: resolved? true
14+
-----Pre-Second-----
15+
16+
tracker_base is: resolved? true
17+
tracker_middle is: resolved? true
18+
tracker_test is: resolved? true
19+
20+
-----Post-Second-----
21+
Deferring tracker base.
22+
23+
tracker_base is: resolved? true
24+
tracker_middle is: resolved? true
25+
tracker_test is: resolved? true
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{# Start Label: ignored_output_from_extends #}{% do %}
2+
3+
4+
5+
Deferring tracker test.
6+
{% set tracker_test = deferred %}
7+
8+
9+
10+
11+
12+
Deferring tracker middle.
13+
{% set tracker_middle = deferred %}
14+
{% enddo %}\
15+
{# End Label: ignored_output_from_extends #}{% set current_path = 'eager/handles-deferred-used-in-multiple-block-levels/base.jinja' %}
16+
17+
tracker_base is: 1_base? true
18+
tracker_middle is: {{ tracker_middle }}\
19+
? {{ tracker_middle == 'resolved' }}
20+
tracker_test is: {{ tracker_test }}\
21+
? {{ tracker_test == 'resolved' }}
22+
-----Pre-First-----
23+
{% set __temp_meta_current_path_1057627035__,current_path = current_path,'eager/handles-deferred-used-in-multiple-block-levels/test.jinja' %}
24+
tracker_base is: {{ tracker_base }}\
25+
? {{ tracker_base == 'resolved' }}
26+
tracker_middle is: {{ tracker_middle }}\
27+
? {{ tracker_middle == 'resolved' }}
28+
tracker_test is: {{ tracker_test }}\
29+
? {{ tracker_test == 'resolved' }}
30+
{% set current_path,__temp_meta_current_path_1057627035__ = __temp_meta_current_path_1057627035__,null %}
31+
-----Post-First-----
32+
tracker_base is: 1_base? true
33+
tracker_middle is: {{ tracker_middle }}\
34+
? {{ tracker_middle == 'resolved' }}
35+
tracker_test is: {{ tracker_test }}\
36+
? {{ tracker_test == 'resolved' }}
37+
-----Pre-Second-----
38+
{% set __temp_meta_current_path_697061783__,current_path = current_path,'eager/handles-deferred-used-in-multiple-block-levels/middle.jinja' %}
39+
tracker_base is: {{ tracker_base }}\
40+
? {{ tracker_base == 'resolved' }}
41+
tracker_middle is: {{ tracker_middle }}\
42+
? {{ tracker_middle == 'resolved' }}
43+
tracker_test is: {{ tracker_test }}\
44+
? {{ tracker_test == 'resolved' }}
45+
{% set current_path,__temp_meta_current_path_697061783__ = __temp_meta_current_path_697061783__,null %}
46+
-----Post-Second-----
47+
Deferring tracker base.
48+
{% set tracker_base = deferred %}
49+
tracker_base is: {{ tracker_base }}\
50+
? {{ tracker_base == 'resolved' }}
51+
tracker_middle is: {{ tracker_middle }}\
52+
? {{ tracker_middle == 'resolved' }}
53+
tracker_test is: {{ tracker_test }}\
54+
? {{ tracker_test == 'resolved' }}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{% extends '../../eager/handles-deferred-used-in-multiple-block-levels/middle.jinja' %}
2+
3+
{% set tracker_test = '3_test' %}
4+
{% block first %}
5+
tracker_base is: {{ tracker_base }}? {{ tracker_base == 'resolved' }}
6+
tracker_middle is: {{ tracker_middle }}? {{ tracker_middle == 'resolved' }}
7+
tracker_test is: {{ tracker_test }}? {{ tracker_test == 'resolved' }}
8+
{% endblock %}
9+
Deferring tracker test.{# This message will not show up in final output #}
10+
{% set tracker_test = deferred %}

src/test/resources/eager/reconstructs-block-path-when-deferred-nested/test.expected.jinja

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,22 @@
33
Parent's current path is: {{ '{{' + prefix + '_path }}\
44
' }}
55
-----Pre-First-----
6+
{% block first %}\
67
{% set __temp_meta_current_path_389897147__,current_path = current_path,'eager/reconstructs-block-path-when-deferred-nested/test.jinja' %}\
78
{% set prefix = deferred ? 'current' : 'current' %}\
89
Child's first current path is: {{ '{{' + prefix + '_path }}\
910
' }}
10-
{% set current_path,__temp_meta_current_path_389897147__ = __temp_meta_current_path_389897147__,null %}
11+
{% set current_path,__temp_meta_current_path_389897147__ = __temp_meta_current_path_389897147__,null %}\
12+
{% endblock first %}
1113
-----Post-First-----
1214
-----Pre-Second-----
15+
{% block second %}\
1316
{% set __temp_meta_current_path_198396781__,current_path = current_path,'eager/reconstructs-block-path-when-deferred-nested/middle.jinja' %}\
1417
{% set prefix = deferred ? 'current' : 'current' %}\
1518
Middle's second current path is: {{ '{{' + prefix + '_path }}\
1619
' }}
17-
{% set current_path,__temp_meta_current_path_198396781__ = __temp_meta_current_path_198396781__,null %}
20+
{% set current_path,__temp_meta_current_path_198396781__ = __temp_meta_current_path_198396781__,null %}\
21+
{% endblock second %}
1822
-----Post-Second-----
1923
Parent's current path is: {{ '{{' + prefix + '_path }}\
2024
' }}

src/test/resources/eager/reconstructs-block-path-when-deferred/test.expected.jinja

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
Parent's current path is: {{ '{{' + prefix + '_path }}\
44
' }}
55
-----Pre-Block-----
6+
{% block body %}\
67
{% set __temp_meta_current_path_329664044__,current_path = current_path,'eager/reconstructs-block-path-when-deferred/test.jinja' %}\
78
{% set prefix = deferred ? 'current' : 'current' %}\
89
Block's current path is: {{ '{{' + prefix + '_path }}\
910
' }}
10-
{% set current_path,__temp_meta_current_path_329664044__ = __temp_meta_current_path_329664044__,null %}
11+
{% set current_path,__temp_meta_current_path_329664044__ = __temp_meta_current_path_329664044__,null %}\
12+
{% endblock body %}
1113
-----Post-Block-----
1214
Parent's current path is: {{ '{{' + prefix + '_path }}\
13-
' }}
15+
' }}

0 commit comments

Comments
 (0)