mirror of https://github.com/ansible/ansible.git
ini lookup - catch and handle duplicate key and missing section errors (#74629)
* Remove unused import * Add integration tests for errors * Cleanup formatting on existing tests * Add changelogpull/70542/head
parent
829c9c3d46
commit
0affe4d027
@ -0,0 +1,2 @@
|
|||||||
|
bugfixes:
|
||||||
|
- ini lookup - handle errors for duplicate keys and missing sections (https://github.com/ansible/ansible/issues/74601)
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
[reggae]
|
||||||
|
name = bob
|
||||||
|
name = marley
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
[reggae]
|
||||||
|
name = bob
|
||||||
|
NAME = marley
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
[all]
|
||||||
|
testhost ansible_connection=local ansible_python_interpreter="{{ ansible_playbook_python }}"
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
- name: Test INI lookup errors
|
||||||
|
hosts: testhost
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Test for failure on Python 3
|
||||||
|
when: ansible_facts.python.version_info[0] >= 3
|
||||||
|
block:
|
||||||
|
- name: Lookup a file with duplicate keys
|
||||||
|
debug:
|
||||||
|
msg: "{{ lookup('ini', 'reggae', file='duplicate.ini', section='reggae') }}"
|
||||||
|
ignore_errors: yes
|
||||||
|
register: duplicate
|
||||||
|
|
||||||
|
- name: Lookup a file with keys that differ only in case
|
||||||
|
debug:
|
||||||
|
msg: "{{ lookup('ini', 'reggae', file='duplicate_case_check.ini', section='reggae') }}"
|
||||||
|
ignore_errors: yes
|
||||||
|
register: duplicate_case_sensitive
|
||||||
|
|
||||||
|
- name: Ensure duplicate key errers were handled properly
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- duplicate is failed
|
||||||
|
- "'Duplicate option in' in duplicate.msg"
|
||||||
|
- duplicate_case_sensitive is failed
|
||||||
|
- "'Duplicate option in' in duplicate_case_sensitive.msg"
|
||||||
|
|
||||||
|
- name: Lookup a file with a missing section
|
||||||
|
debug:
|
||||||
|
msg: "{{ lookup('ini', 'reggae', file='lookup.ini', section='missing') }}"
|
||||||
|
ignore_errors: yes
|
||||||
|
register: missing_section
|
||||||
|
|
||||||
|
- name: Ensure error was shown for a missing section
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- missing_section is failed
|
||||||
|
- "'No section' in missing_section.msg"
|
||||||
|
|
||||||
|
- name: Mix options type and push key out of order
|
||||||
|
debug:
|
||||||
|
msg: "{{ lookup('ini', 'file=lookup.ini', 'value1', section='value_section') }}"
|
||||||
|
register: bad_mojo
|
||||||
|
ignore_errors: yes
|
||||||
|
|
||||||
|
- name: Verify bad behavior reported an error
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- bad_mojo is failed
|
||||||
|
- '"No key to lookup was provided as first term with in string inline option" in bad_mojo.msg'
|
||||||
Loading…
Reference in New Issue