110 lines
3.3 KiB
YAML
110 lines
3.3 KiB
YAML
---
|
|
- name: Set fact
|
|
ansible.builtin.set_fact:
|
|
complex:
|
|
a:
|
|
- true
|
|
- true
|
|
- false
|
|
- 5
|
|
|
|
b:
|
|
- b1: 1
|
|
b2: 2
|
|
- b1: 3
|
|
b2: 4
|
|
c:
|
|
c1:
|
|
- a
|
|
- b
|
|
- c
|
|
d:
|
|
- Abcd
|
|
- abcd
|
|
- B
|
|
- b
|
|
|
|
- name: Some basic tests
|
|
ansible.builtin.assert:
|
|
that: "{{ item.test == item.result }}"
|
|
loop:
|
|
- test: "{{ complex.a|ansible.utils.index_of('eq', true) }}"
|
|
result: [0, 1]
|
|
- test: "{{ lookup('ansible.utils.index_of', complex.a, 'eq', true) }}"
|
|
result: [0, 1]
|
|
- test: "{{ complex.a|ansible.utils.index_of('in', [true, False]) }}"
|
|
result: [0, 1, 2]
|
|
- test: "{{ lookup('ansible.utils.index_of', complex.a, 'in', [true, False]) }}"
|
|
result: [0, 1, 2]
|
|
# These are commented out due to jinja < 2.11 w/ 2.9, 'integer' not avaialable
|
|
# can be enabled at a later date
|
|
# - test: "{{ complex.a|ansible.utils.index_of('integer') }}"
|
|
# result: "3"
|
|
# - test: "{{ lookup('ansible.utils.index_of', complex.a, 'integer') }}"
|
|
# result: "3"
|
|
|
|
- test: "{{ complex.b|ansible.utils.index_of('==', 1, 'b1') }}"
|
|
result: "0"
|
|
- test: "{{ lookup('ansible.utils.index_of', complex.b, '==', 1, 'b1') }}"
|
|
result: "0"
|
|
|
|
- test: "{{ complex.c.c1|ansible.utils.index_of('!=', 'c') }}"
|
|
result: [0, 1]
|
|
- test: "{{ lookup('ansible.utils.index_of', complex.c.c1, '!=', 'c') }}"
|
|
result: [0, 1]
|
|
|
|
- test: "{{ complex.d|ansible.utils.index_of('match', '.*d$') }}"
|
|
result: [0, 1]
|
|
- test: "{{ lookup('ansible.utils.index_of', complex.d, 'match', '.*d$') }}"
|
|
result: [0, 1]
|
|
|
|
- name: Set fact
|
|
ansible.builtin.set_fact:
|
|
complex:
|
|
a:
|
|
b:
|
|
c:
|
|
d:
|
|
- e0: 0
|
|
e1: ansible
|
|
e2: true
|
|
- e0: 1
|
|
e1: redhat
|
|
|
|
- name: Find index in list of dictionaries
|
|
ansible.builtin.assert:
|
|
that: "{{ item.test == item.result }}"
|
|
loop:
|
|
- test: "{{ complex.a.b.c.d|ansible.utils.index_of('eq', 'ansible', 'e1') }}"
|
|
result: "0"
|
|
- test: "{{ lookup('ansible.utils.index_of', complex.a.b.c.d, 'eq', 'ansible', 'e1') }}"
|
|
result: "0"
|
|
- test: "{{ complex.a.b.c.d|ansible.utils.index_of('eq', 'ansible', 'e1', wantlist=true) }}"
|
|
result: [0]
|
|
- test: "{{ lookup('ansible.utils.index_of', complex.a.b.c.d, 'eq', 'ansible', 'e1', wantlist=true) }}"
|
|
result: [0]
|
|
|
|
- name: Test a missing key in the list of dictionaries
|
|
ansible.builtin.assert:
|
|
that: "{{ item.test == item.result }}"
|
|
loop:
|
|
- test: "{{ complex.a.b.c.d|ansible.utils.index_of('eq', true, 'e2') }}"
|
|
result: "0"
|
|
- test: "{{ lookup('ansible.utils.index_of', complex.a.b.c.d, 'eq', true, 'e2') }}"
|
|
result: "0"
|
|
|
|
- name: Test a missing key in the list of dictionaries, fail on missing
|
|
ansible.builtin.assert:
|
|
that: "{{ item.test == item.result }}"
|
|
loop:
|
|
- test: "{{ complex.a.b.c.d|ansible.utils.index_of('eq', true, 'e2', fail_on_missing=true) }}"
|
|
result: "0"
|
|
- test: "{{ lookup('ansible.utils.index_of', complex.a.b.c.d, 'eq', true, 'e2', fail_on_missing=true) }}"
|
|
result: "0"
|
|
ignore_errors: true
|
|
register: result
|
|
|
|
- name: Ensure the previous test failed
|
|
ansible.builtin.assert:
|
|
that: "{{ result.failed and 'not found in' in result.msg }}"
|