When using ANSIBLE_JINJA2_NATIVE bypass our None filtering in _finalze (#41408)

* When using ANSIBLE_JINJA2_NATIVE bypass our None filtering in _finalize. Fixes #41392

* Add tests for _finalize bypass

* Address python3 failures in tests
This commit is contained in:
Matt Martz 2018-06-12 08:46:23 -05:00 committed by GitHub
parent 46ae1a343a
commit ad0827e5c0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 26 additions and 8 deletions

View file

@ -609,8 +609,13 @@ class Templar:
def _finalize(self, thing):
'''
A custom finalize method for jinja2, which prevents None from being returned
A custom finalize method for jinja2, which prevents None from being returned. This
avoids a string of ``"None"`` as ``None`` has no importance in YAML.
If using ANSIBLE_JINJA2_NATIVE we bypass this and return the actual value always
'''
if USE_JINJA2_NATIVE:
return thing
return thing if thing is not None else ''
def _fail_lookup(self, name, *args, **kwargs):

View file

@ -29,6 +29,7 @@
b_false: False
s_true: "True"
s_false: "False"
yaml_none: ~
tasks:
- name: check jinja version
shell: python -c 'import jinja2; print(jinja2.__version__)'
@ -44,4 +45,5 @@
- import_tasks: test_bool.yml
- import_tasks: test_dunder.yml
- import_tasks: test_types.yml
- import_tasks: test_none.yml
when: is_native

View file

@ -11,11 +11,11 @@
- assert:
that:
- 'int_to_str == "2"'
- 'int_to_str|type_debug in ["string", "unicode"]'
- 'int_to_str|type_debug in ["str", "unicode"]'
- 'str_to_int == 2'
- 'str_to_int|type_debug == "int"'
- 'dict_to_str|type_debug in ["string", "unicode"]'
- 'list_to_str|type_debug in ["string", "unicode"]'
- 'dict_to_str|type_debug in ["str", "unicode"]'
- 'list_to_str|type_debug in ["str", "unicode"]'
- 'int_to_bool is sameas true'
- 'int_to_bool|type_debug == "bool"'
- 'str_true_to_bool is sameas true'

View file

@ -23,7 +23,7 @@
- assert:
that:
- 'string_sum == "12"'
- 'string_sum|type_debug in ["string", "unicode"]'
- 'string_sum|type_debug in ["str", "unicode"]'
- name: add two lists
set_fact:
@ -40,7 +40,7 @@
- assert:
that:
- 'list_sum_multi|type_debug in ["string", "unicode"]'
- 'list_sum_multi|type_debug in ["str", "unicode"]'
- name: add two dicts
set_fact:
@ -58,7 +58,7 @@
- assert:
that:
- 'list_for_strings == "onetwo"'
- 'list_for_strings|type_debug in ["string", "unicode"]'
- 'list_for_strings|type_debug in ["str", "unicode"]'
- name: loop through list with int
set_fact:

View file

@ -20,4 +20,4 @@
- assert:
that:
- 'const_dunder|type_debug in ["string", "unicode"]'
- 'const_dunder|type_debug in ["str", "unicode"]'

View file

@ -0,0 +1,11 @@
- name: test none
set_fact:
none_var: "{{ yaml_none }}"
none_var_direct: "{{ None }}"
- assert:
that:
- 'none_var is sameas none'
- 'none_var|type_debug == "NoneType"'
- 'none_var_direct is sameas none'
- 'none_var_direct|type_debug == "NoneType"'