Skip to content

Commit

Permalink
native types: literal_eval all the things
Browse files Browse the repository at this point in the history
With pallets/jinja#1190 merged our short-circuit
is no longer valid (has it ever been?) as now data like ' True ' may go
through our ansible_native_concat function as opposed to going through
intermediate call to Jinja2's native_concat before. Now we need to always
send data through literal_eval to ensure native types are returned.
  • Loading branch information
mkrizek committed Apr 14, 2020
1 parent ff1ba39 commit 066a538
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 16 deletions.
4 changes: 0 additions & 4 deletions lib/ansible/template/native_helpers.py
Expand Up @@ -48,10 +48,6 @@ def ansible_native_concat(nodes):
# See https://github.com/ansible/ansible/issues/52158
# We do that only here because it is taken care of by to_text() in the else block below already.
str(out)

# short circuit literal_eval when possible
if not isinstance(out, list):
return out
else:
if isinstance(nodes, types.GeneratorType):
nodes = chain(head, nodes)
Expand Down

This file was deleted.

6 changes: 3 additions & 3 deletions test/integration/targets/jinja2_native_types/test_casting.yml
@@ -1,9 +1,9 @@
- name: cast things to other things
set_fact:
int_to_str: "{{ i_two|to_text }}"
int_to_str: "'{{ i_two }}'"
str_to_int: "{{ s_two|int }}"
dict_to_str: "{{ dict_one|to_text }}"
list_to_str: "{{ list_one|to_text }}"
dict_to_str: "'{{ dict_one }}'"
list_to_str: "'{{ list_one }}'"
int_to_bool: "{{ i_one|bool }}"
str_true_to_bool: "{{ s_true|bool }}"
str_false_to_bool: "{{ s_false|bool }}"
Expand Down
Expand Up @@ -18,7 +18,7 @@

- name: concatenate int and string
set_fact:
string_sum: "{{ [(i_one|to_text), s_two]|join('') }}"
string_sum: "'{{ [i_one, s_two]|join('') }}'"

- assert:
that:
Expand Down

0 comments on commit 066a538

Please sign in to comment.