Set Jinja2's keep_trailing_newline=True in template_from_string.

Without this setting, the newline idempotence of scalar strings changes depending on whether
or not they contain any Jinja2 template blocks.
pull/8134/head
Jacob Leverich 10 years ago
parent 7c6175e780
commit 7a8eb0b670

@ -322,7 +322,7 @@ def template_from_string(basedir, data, vars, fail_on_undefined=False):
def my_finalize(thing): def my_finalize(thing):
return thing if thing is not None else '' return thing if thing is not None else ''
environment = jinja2.Environment(trim_blocks=True, undefined=StrictUndefined, extensions=_get_extensions(), finalize=my_finalize) environment = jinja2.Environment(trim_blocks=True, keep_trailing_newline=True, undefined=StrictUndefined, extensions=_get_extensions(), finalize=my_finalize)
environment.filters.update(_get_filters()) environment.filters.update(_get_filters())
environment.template_class = J2Template environment.template_class = J2Template

@ -64,3 +64,9 @@
that: that:
- "file_result.changed != True" - "file_result.changed != True"
# VERIFY STRING TEMPLATE PRESERVES NEWLINE
- name: ensure template strings preserve newline
assert:
that:
- "newline_no_template_string == newline_template_string"

@ -1 +1,3 @@
templated_var: templated_var_loaded templated_var: templated_var_loaded
newline_template_string: "Hello {{ 'World' }}\n"
newline_no_template_string: "Hello World\n"

Loading…
Cancel
Save