From 7a8eb0b6701e437cb18b9b3a540dbac9aef9db26 Mon Sep 17 00:00:00 2001 From: Jacob Leverich Date: Mon, 14 Jul 2014 13:36:17 -0700 Subject: [PATCH] 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. --- lib/ansible/utils/template.py | 2 +- test/integration/roles/test_template/tasks/main.yml | 8 +++++++- test/integration/roles/test_template/vars/main.yml | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/ansible/utils/template.py b/lib/ansible/utils/template.py index cc1dc7fdeba..4f1e56c7d3b 100644 --- a/lib/ansible/utils/template.py +++ b/lib/ansible/utils/template.py @@ -322,7 +322,7 @@ def template_from_string(basedir, data, vars, fail_on_undefined=False): def my_finalize(thing): 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.template_class = J2Template diff --git a/test/integration/roles/test_template/tasks/main.yml b/test/integration/roles/test_template/tasks/main.yml index 4784dc6ac82..8dcb0b47cf1 100644 --- a/test/integration/roles/test_template/tasks/main.yml +++ b/test/integration/roles/test_template/tasks/main.yml @@ -63,4 +63,10 @@ assert: that: - "file_result.changed != True" - + +# VERIFY STRING TEMPLATE PRESERVES NEWLINE + +- name: ensure template strings preserve newline + assert: + that: + - "newline_no_template_string == newline_template_string" diff --git a/test/integration/roles/test_template/vars/main.yml b/test/integration/roles/test_template/vars/main.yml index 1e8f64ccf44..88503a22cab 100644 --- a/test/integration/roles/test_template/vars/main.yml +++ b/test/integration/roles/test_template/vars/main.yml @@ -1 +1,3 @@ templated_var: templated_var_loaded +newline_template_string: "Hello {{ 'World' }}\n" +newline_no_template_string: "Hello World\n"