Emit proper error for x in y when y is undefined (#70990)

Fixes #70984
This commit is contained in:
Martin Krizek 2020-07-30 21:57:01 +02:00 committed by GitHub
parent d62dffafb3
commit bf7276a4e8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 0 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- templating - fix error message for ``x in y`` when y is undefined (https://github.com/ansible/ansible/issues/70984)

View file

@ -291,6 +291,10 @@ class AnsibleUndefined(StrictUndefined):
def __repr__(self): def __repr__(self):
return 'AnsibleUndefined' return 'AnsibleUndefined'
def __contains__(self, item):
# Return original Undefined object to preserve the first failure context
return self
class AnsibleContext(Context): class AnsibleContext(Context):
''' '''

View file

@ -706,5 +706,14 @@
- 'diff_result.stdout == ""' - 'diff_result.stdout == ""'
- "diff_result.rc == 0" - "diff_result.rc == 0"
- debug:
msg: "{{ 'x' in y }}"
ignore_errors: yes
register: error
- name: check that proper error message is emitted when in operator is used
assert:
that: "\"'y' is undefined\" in error.msg"
# aliases file requires root for template tests so this should be safe # aliases file requires root for template tests so this should be safe
- include: backup_test.yml - include: backup_test.yml