Extend jinja2 nested undefined support to keys/indices (#55094)

This commit is contained in:
Matt Martz 2019-04-10 10:35:31 -05:00 committed by GitHub
parent 877ce12970
commit e89f8bae86
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 0 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- jinja2 - accesses to keys/indices on an undefined value now return further undefined values rather than throwing an exception

View file

@ -207,6 +207,10 @@ class AnsibleUndefined(StrictUndefined):
# Return original Undefined object to preserve the first failure context # Return original Undefined object to preserve the first failure context
return self return self
def __getitem__(self, key):
# Return original Undefined object to preserve the first failure context
return self
def __repr__(self): def __repr__(self):
return 'AnsibleUndefined' return 'AnsibleUndefined'

View file

@ -666,6 +666,24 @@
- list_var.0.foo.bar | default('DEFAULT') == 'DEFAULT' - list_var.0.foo.bar | default('DEFAULT') == 'DEFAULT'
- list_var.1.foo is not defined - list_var.1.foo is not defined
- list_var.1.foo | default('DEFAULT') == 'DEFAULT' - list_var.1.foo | default('DEFAULT') == 'DEFAULT'
- dict_var is defined
- dict_var['bar'] is defined
- dict_var['bar']['baz'] is not defined
- dict_var['bar']['baz'] | default('DEFAULT') == 'DEFAULT'
- dict_var['bar']['baz']['abc'] is not defined
- dict_var['bar']['baz']['abc'] | default('DEFAULT') == 'DEFAULT'
- dict_var['baz'] is not defined
- dict_var['baz']['abc'] is not defined
- dict_var['baz']['abc'] | default('DEFAULT') == 'DEFAULT'
- list_var[0] is defined
- list_var[1] is not defined
- list_var[0]['foo'] is defined
- list_var[0]['foo']['bar'] is not defined
- list_var[0]['foo']['bar'] | default('DEFAULT') == 'DEFAULT'
- list_var[1]['foo'] is not defined
- list_var[1]['foo'] | default('DEFAULT') == 'DEFAULT'
- dict_var['bar'].baz is not defined
- dict_var['bar'].baz | default('DEFAULT') == 'DEFAULT'
- template: - template:
src: template_destpath_test.j2 src: template_destpath_test.j2