ansible/test/integration/targets/lookup_first_found/tasks/main.yml
Brian Coca 84e473a26e
All lookups ported to config system (#74108)
* all lookups to support config system

 - added get_options to get full dict with all opts
 - fixed tests to match new error messages
 - kept inline string k=v parsing methods for backwards compat
 - placeholder depredation for inline string k=v parsing
 - updated tests and examples to also show new way
 - refactored and added comments to most custom k=v parsing
 - added missing docs for template_vars to template
 - normalized error messages and exception types
 - fixed constants default
 - better details value errors

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-04-13 15:52:42 -04:00

86 lines
2.2 KiB
YAML

- name: test with_first_found
set_fact: "first_found={{ item }}"
with_first_found:
- "does_not_exist"
- "foo1"
- "{{ role_path + '/files/bar1' }}" # will only hit this if dwim search is broken
- name: set expected
set_fact: first_expected="{{ role_path + '/files/foo1' }}"
- name: set unexpected
set_fact: first_unexpected="{{ role_path + '/files/bar1' }}"
- name: verify with_first_found results
assert:
that:
- "first_found == first_expected"
- "first_found != first_unexpected"
- name: test q(first_found) with no files produces empty list
set_fact:
first_found_var: "{{ q('first_found', params, errors='ignore') }}"
vars:
params:
files: "not_a_file.yaml"
skip: True
- name: verify q(first_found) result
assert:
that:
- "first_found_var == []"
- name: test lookup(first_found) with no files produces empty string
set_fact:
first_found_var: "{{ lookup('first_found', params, errors='ignore') }}"
vars:
params:
files: "not_a_file.yaml"
- name: verify lookup(first_found) result
assert:
that:
- "first_found_var == ''"
# NOTE: skip: True deprecated e17a2b502d6601be53c60d7ba1c627df419460c9, remove 2.12
- name: test first_found with no matches and skip=True does nothing
set_fact: "this_not_set={{ item }}"
vars:
params:
files:
- not/a/file.yaml
- another/non/file.yaml
skip: True
loop: "{{ q('first_found', params) }}"
- name: verify skip
assert:
that:
- "this_not_set is not defined"
- name: test first_found with no matches and errors='ignore' skips in a loop
set_fact: "this_not_set={{ item }}"
vars:
params:
files:
- not/a/file.yaml
- another/non/file.yaml
loop: "{{ query('first_found', params, errors='ignore') }}"
- name: verify errors=ignore
assert:
that:
- "this_not_set is not defined"
- name: test legacy formats
set_fact: hatethisformat={{item}}
vars:
params:
files: not/a/file.yaml;hosts
paths: not/a/path:/etc
loop: "{{ q('first_found', params) }}"
- name: verify /etc/hosts was found
assert:
that:
- "hatethisformat == '/etc/hosts'"