Skip to content

Commit 9742adf

Browse files
authored
Merge pull request #1203 from HubSpot/pretty-test-templates
Make fixture test templates "pretty"
2 parents bfcacbd + 3123416 commit 9742adf

85 files changed

Lines changed: 792 additions & 246 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

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

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,20 @@ public ExpectedNodeInterpreter(JinjavaInterpreter interpreter, Tag tag, String p
2626
public String assertExpectedOutput(String name) {
2727
TagNode tagNode = (TagNode) fixture(name);
2828
String output = tag.interpret(tagNode, interpreter);
29-
assertThat(output.trim()).isEqualTo(expected(name).trim());
29+
assertThat(ExpectedTemplateInterpreter.prettify(output.trim()))
30+
.isEqualTo(ExpectedTemplateInterpreter.prettify(expected(name).trim()));
3031
return output;
3132
}
3233

3334
public Node fixture(String name) {
3435
try {
3536
return new TreeParser(
3637
interpreter,
37-
Resources.toString(
38-
Resources.getResource(String.format("%s/%s.jinja", path, name)),
39-
StandardCharsets.UTF_8
38+
ExpectedTemplateInterpreter.simplify(
39+
Resources.toString(
40+
Resources.getResource(String.format("%s/%s.jinja", path, name)),
41+
StandardCharsets.UTF_8
42+
)
4043
)
4144
)
4245
.buildTree()
@@ -49,9 +52,11 @@ public Node fixture(String name) {
4952

5053
public String expected(String name) {
5154
try {
52-
return Resources.toString(
53-
Resources.getResource(String.format("%s/%s.expected.jinja", path, name)),
54-
StandardCharsets.UTF_8
55+
return ExpectedTemplateInterpreter.simplify(
56+
Resources.toString(
57+
Resources.getResource(String.format("%s/%s.expected.jinja", path, name)),
58+
StandardCharsets.UTF_8
59+
)
5560
);
5661
} catch (IOException e) {
5762
throw new RuntimeException(e);

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

Lines changed: 51 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class ExpectedTemplateInterpreter {
1515
private Jinjava jinjava;
1616
private JinjavaInterpreter interpreter;
1717
private String path;
18+
private boolean sensibleCurrentPath = false;
1819

1920
public ExpectedTemplateInterpreter(
2021
Jinjava jinjava,
@@ -26,15 +27,35 @@ public ExpectedTemplateInterpreter(
2627
this.path = path;
2728
}
2829

30+
public static ExpectedTemplateInterpreter withSensibleCurrentPath(
31+
Jinjava jinjava,
32+
JinjavaInterpreter interpreter,
33+
String path
34+
) {
35+
return new ExpectedTemplateInterpreter(jinjava, interpreter, path, true);
36+
}
37+
38+
private ExpectedTemplateInterpreter(
39+
Jinjava jinjava,
40+
JinjavaInterpreter interpreter,
41+
String path,
42+
boolean sensibleCurrentPath
43+
) {
44+
this.jinjava = jinjava;
45+
this.interpreter = interpreter;
46+
this.path = path;
47+
this.sensibleCurrentPath = sensibleCurrentPath;
48+
}
49+
2950
public String assertExpectedOutput(String name) {
3051
String template = getFixtureTemplate(name);
3152
String output = JinjavaInterpreter.getCurrent().render(template);
3253
assertThat(JinjavaInterpreter.getCurrent().getContext().getDeferredNodes())
3354
.as("Ensure no deferred nodes were created")
3455
.isEmpty();
35-
assertThat(output.trim()).isEqualTo(expected(name).trim());
36-
assertThat(JinjavaInterpreter.getCurrent().render(output).trim())
37-
.isEqualTo(expected(name).trim());
56+
assertThat(prettify(output.trim())).isEqualTo(prettify(expected(name).trim()));
57+
assertThat(prettify(JinjavaInterpreter.getCurrent().render(output).trim()))
58+
.isEqualTo(prettify(expected(name).trim()));
3859
return output;
3960
}
4061

@@ -44,7 +65,7 @@ public String assertExpectedOutputNonIdempotent(String name) {
4465
assertThat(JinjavaInterpreter.getCurrent().getContext().getDeferredNodes())
4566
.as("Ensure no deferred nodes were created")
4667
.isEmpty();
47-
assertThat(output.trim()).isEqualTo(expected(name).trim());
68+
assertThat(prettify(output.trim())).isEqualTo(prettify(expected(name).trim()));
4869
return output;
4970
}
5071

@@ -105,7 +126,7 @@ public String assertExpectedNonEagerOutput(String name) {
105126
assertThat(JinjavaInterpreter.getCurrent().getContext().getDeferredNodes())
106127
.as("Ensure no deferred nodes were created")
107128
.isEmpty();
108-
assertThat(output.trim()).isEqualTo(expected(name).trim());
129+
assertThat(prettify(output.trim())).isEqualTo(prettify(expected(name).trim()));
109130
}
110131
} finally {
111132
JinjavaInterpreter.popCurrent();
@@ -114,11 +135,24 @@ public String assertExpectedNonEagerOutput(String name) {
114135
return output;
115136
}
116137

138+
static String prettify(String string) {
139+
return string.replaceAll("([}%]})([^\\s])", "$1\\\\\n$2");
140+
}
141+
117142
public String getFixtureTemplate(String name) {
118143
try {
119-
return Resources.toString(
120-
Resources.getResource(String.format("%s/%s.jinja", path, name)),
121-
StandardCharsets.UTF_8
144+
if (sensibleCurrentPath) {
145+
JinjavaInterpreter
146+
.getCurrent()
147+
.getContext()
148+
.getCurrentPathStack()
149+
.push(String.format("%s/%s.jinja", path, name), 0, 0);
150+
}
151+
return simplify(
152+
Resources.toString(
153+
Resources.getResource(String.format("%s/%s.jinja", path, name)),
154+
StandardCharsets.UTF_8
155+
)
122156
);
123157
} catch (IOException e) {
124158
throw new RuntimeException(e);
@@ -127,15 +161,21 @@ public String getFixtureTemplate(String name) {
127161

128162
private String expected(String name) {
129163
try {
130-
return Resources.toString(
131-
Resources.getResource(String.format("%s/%s.expected.jinja", path, name)),
132-
StandardCharsets.UTF_8
164+
return simplify(
165+
Resources.toString(
166+
Resources.getResource(String.format("%s/%s.expected.jinja", path, name)),
167+
StandardCharsets.UTF_8
168+
)
133169
);
134170
} catch (IOException e) {
135171
throw new RuntimeException(e);
136172
}
137173
}
138174

175+
static String simplify(String prettified) {
176+
return prettified.replaceAll("\\\\\n\\s*", "");
177+
}
178+
139179
public String getDeferredFixtureTemplate(String templateLocation) {
140180
try {
141181
return Resources.toString(
Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
1-
{% set a_list = ['a', 'b'] %}{% for __ignored__ in [0] %}
2-
{% set b_list = a_list %}{% if deferred %}
1+
{% set a_list = ['a', 'b'] %}\
2+
{% for __ignored__ in [0] %}
3+
{% set b_list = a_list %}\
4+
{% if deferred %}
35
{% set b_list = [deferred] %}
4-
{% endif %}{% do b_list.append(deferred ? 'B' : '') %}
5-
B: {{ b_list }}.{% endfor %}{% do a_list.append(deferred ? 'A' : '') %}
6-
A: {{ a_list }}.
6+
{% endif %}\
7+
{% do b_list.append(deferred ? 'B' : '') %}
8+
B: {{ b_list }}\
9+
.{% endfor %}\
10+
{% do a_list.append(deferred ? 'A' : '') %}
11+
A: {{ a_list }}\
12+
.
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
0
22
META
33
{% for meta in deferred %}
4-
{{ meta }}{% endfor %}
4+
{{ meta }}\
5+
{% endfor %}
56
META
6-
{% set meta = [] %}{% if deferred %}
7+
{% set meta = [] %}\
8+
{% if deferred %}
79
{% do meta.append(1) %}
810
{% endif %}
911
{{ meta }}
Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
1-
{% do %}{% set current_path = 'filters.jinja' %}{% set __temp_import_alias_854547461__ = {} %}{% for __ignored__ in [0] %}
2-
{% set bar = deferred %}{% do __temp_import_alias_854547461__.update({'bar': bar}) %}
1+
{% do %}\
2+
{% set current_path = 'filters.jinja' %}\
3+
{% set __temp_import_alias_854547461__ = {} %}\
4+
{% for __ignored__ in [0] %}
5+
{% set bar = deferred %}\
6+
{% do __temp_import_alias_854547461__.update({'bar': bar}) %}
37

4-
{% set filters = {} %}{% do __temp_import_alias_854547461__.update({'filters': filters}) %}{% do filters.update(deferred) %}
5-
{% do __temp_import_alias_854547461__.update({'bar': bar,'foo': 123,'import_resource_path': 'filters.jinja','filters': filters}) %}{% endfor %}{% set filters = __temp_import_alias_854547461__ %}{% set current_path = '' %}{% enddo %}
8+
{% set filters = {} %}\
9+
{% do __temp_import_alias_854547461__.update({'filters': filters}) %}\
10+
{% do filters.update(deferred) %}
11+
{% do __temp_import_alias_854547461__.update({'bar': bar,'foo': 123,'import_resource_path': 'filters.jinja','filters': filters}) %}\
12+
{% endfor %}\
13+
{% set filters = __temp_import_alias_854547461__ %}\
14+
{% set current_path = '' %}\
15+
{% enddo %}
616

717
{{ filters }}

src/test/resources/eager/commits-variables-from-do-tag-when-partially-resolved.expected.jinja

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
{% do %}{% set list1 = ['b'] %}{% set list0 = ['a'] %}{% set list2 = ['c'] %}
1+
{% do %}\
2+
{% set list1 = ['b'] %}\
3+
{% set list0 = ['a'] %}\
4+
{% set list2 = ['c'] %}
25

36

4-
{% set list2 = ['c'] %}{% do list2.append(deferred) %}
7+
{% set list2 = ['c'] %}\
8+
{% do list2.append(deferred) %}
59
{% unless deferred %}
610
{% set list0 = ['a', 'a'] %}
711
{% endunless %}

src/test/resources/eager/correctly-defers-with-multiple-loops.expected.jinja

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
{% set my_list = [] %}{% for __ignored__ in [0] %}
1+
{% set my_list = [] %}\
2+
{% for __ignored__ in [0] %}
23
{% for j in deferred %}
34
{% do my_list.append(0) %}
45
{% endfor %}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
{% macro repeat(val) %}
22
{{ val }}
33
{{ caller() }}
4-
{% endmacro %}{% call repeat(deferred) %}
4+
{% endmacro %}\
5+
{% call repeat(deferred) %}
56
macro 1
67
{% macro repeat(val) %}
78
{{ val }}
89
{{ caller() }}
9-
{% endmacro %}{% call repeat(deferred + 1) %}
10+
{% endmacro %}\
11+
{% call repeat(deferred + 1) %}
1012
macro2
1113
{% endcall %}
1214
{% endcall %}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
Jack says:
2-
How do I get a {{ deferred }}?
2+
How do I get a {{ deferred }}\
3+
?
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
1
2-
{% set bar = [1] %}{% set foo = '1' %}{% if deferred %}
3-
{% set foo %}2{% do bar.append(2) %}{% endset %}
2+
{% set bar = [1] %}\
3+
{% set foo = '1' %}\
4+
{% if deferred %}
5+
{% set foo %}\
6+
2{% do bar.append(2) %}\
7+
{% endset %}
48
{% endif %}
59
Bar: {{ bar }}
610
Foo: {{ foo }}

0 commit comments

Comments
 (0)