eb2a3a91a8
When a task result has an empty results list, the list should be ignored when determining the results of `_check_key`. Here the empty list is treated the same as a non-existent list. This fixes a bug that manifests itself with squashed items - namely the task result contains the correct value for the key, but an empty results list. The empty results list was treated as zero failures when deciding which handler to call - so the task show as a success in the output, but is deemed to have failed when deciding whether to continue. This also demonstrates a mismatch between task result processing and play iteration. A test is also added for this case, but it would not have caught the bug - because the bug is really in the display, and not the success/failure of the task (visually the test is more accurate). Fixes ansible/ansible-modules-core#4214
199 lines
4.4 KiB
YAML
199 lines
4.4 KiB
YAML
# UNINSTALL 'yum-utils'
|
|
# The `yum` module has the smarts to auto-install `yum-utils`. To test, we
|
|
# will first uninstall `yum-utils`.
|
|
- name: check yum-utils with rpm
|
|
shell: rpm -q yum-utils
|
|
register: rpm_result
|
|
ignore_errors: true
|
|
|
|
# Don't uninstall yum-utils with the `yum` module, it would be bad. The `yum`
|
|
# module does some `repoquery` magic after removing a package. It fails when you
|
|
# remove `yum-utils.
|
|
- name: uninstall yum-utils with shell
|
|
shell: yum -y remove yum-utils
|
|
when: rpm_result|success
|
|
|
|
# UNINSTALL
|
|
# With 'yum-utils' uninstalled, the first call to 'yum' should install
|
|
# yum-utils.
|
|
- name: uninstall sos
|
|
yum: name=sos state=removed
|
|
register: yum_result
|
|
|
|
- name: check sos with rpm
|
|
shell: rpm -q sos
|
|
failed_when: False
|
|
register: rpm_result
|
|
|
|
- debug: var=yum_result
|
|
- debug: var=rpm_result
|
|
|
|
- name: verify uninstallation of sos
|
|
assert:
|
|
that:
|
|
- "yum_result.rc == 0"
|
|
- "rpm_result.rc == 1"
|
|
|
|
# UNINSTALL AGAIN
|
|
- name: uninstall sos again
|
|
yum: name=sos state=removed
|
|
register: yum_result
|
|
|
|
- name: verify no change on re-uninstall
|
|
assert:
|
|
that:
|
|
- "not yum_result.changed"
|
|
|
|
# INSTALL
|
|
- name: install sos
|
|
yum: name=sos state=present
|
|
register: yum_result
|
|
|
|
- name: check sos with rpm
|
|
shell: rpm -q sos
|
|
failed_when: False
|
|
register: rpm_result
|
|
|
|
- debug: var=yum_result
|
|
- debug: var=rpm_result
|
|
|
|
- name: verify installation of sos
|
|
assert:
|
|
that:
|
|
- "yum_result.rc == 0"
|
|
- "yum_result.changed"
|
|
- "rpm_result.rc == 0"
|
|
|
|
- name: verify yum module outputs
|
|
assert:
|
|
that:
|
|
- "'changed' in yum_result"
|
|
- "'msg' in yum_result"
|
|
- "'rc' in yum_result"
|
|
- "'results' in yum_result"
|
|
|
|
# INSTALL AGAIN
|
|
- name: install sos again
|
|
yum: name=sos state=present
|
|
register: yum_result
|
|
|
|
- name: verify no change on second install
|
|
assert:
|
|
that:
|
|
- "not yum_result.changed"
|
|
|
|
# Multiple packages
|
|
- name: uninstall sos and sharutils
|
|
yum: name=sos,sharutils state=removed
|
|
register: yum_result
|
|
|
|
- name: check sos with rpm
|
|
shell: rpm -q sos
|
|
failed_when: False
|
|
register: rpm_sos_result
|
|
|
|
- name: check sharutils with rpm
|
|
shell: rpm -q sharutils
|
|
failed_when: False
|
|
register: rpm_sharutils_result
|
|
|
|
- name: verify packages installed
|
|
assert:
|
|
that:
|
|
- "rpm_sos_result.rc != 0"
|
|
- "rpm_sharutils_result.rc != 0"
|
|
|
|
- name: install sos and sharutils as comma separated
|
|
yum: name=sos,sharutils state=present
|
|
register: yum_result
|
|
|
|
- name: check sos with rpm
|
|
shell: rpm -q sos
|
|
failed_when: False
|
|
register: rpm_sos_result
|
|
|
|
- name: check sharutils with rpm
|
|
shell: rpm -q sharutils
|
|
failed_when: False
|
|
register: rpm_sharutils_result
|
|
|
|
- name: verify packages installed
|
|
assert:
|
|
that:
|
|
- "yum_result.rc == 0"
|
|
- "yum_result.changed"
|
|
- "rpm_sos_result.rc == 0"
|
|
- "rpm_sharutils_result.rc == 0"
|
|
|
|
- name: uninstall sos and sharutils
|
|
yum: name=sos,sharutils state=removed
|
|
register: yum_result
|
|
|
|
- name: install sos and sharutils as list
|
|
yum:
|
|
name:
|
|
- sos
|
|
- sharutils
|
|
state: present
|
|
register: yum_result
|
|
|
|
- name: check sos with rpm
|
|
shell: rpm -q sos
|
|
failed_when: False
|
|
register: rpm_sos_result
|
|
|
|
- name: check sharutils with rpm
|
|
shell: rpm -q sharutils
|
|
failed_when: False
|
|
register: rpm_sharutils_result
|
|
|
|
- name: verify packages installed
|
|
assert:
|
|
that:
|
|
- "yum_result.rc == 0"
|
|
- "yum_result.changed"
|
|
- "rpm_sos_result.rc == 0"
|
|
- "rpm_sharutils_result.rc == 0"
|
|
|
|
- name: uninstall sos and sharutils
|
|
yum: name=sos,sharutils state=removed
|
|
register: yum_result
|
|
|
|
- name: install sos and sharutils as comma separated with spaces
|
|
yum:
|
|
name: "sos, sharutils"
|
|
state: present
|
|
register: yum_result
|
|
|
|
- name: check sos with rpm
|
|
shell: rpm -q sos
|
|
failed_when: False
|
|
register: rpm_sos_result
|
|
|
|
- name: check sos with rpm
|
|
shell: rpm -q sharutils
|
|
failed_when: False
|
|
register: rpm_sharutils_result
|
|
|
|
- name: verify packages installed
|
|
assert:
|
|
that:
|
|
- "yum_result.rc == 0"
|
|
- "yum_result.changed"
|
|
- "rpm_sos_result.rc == 0"
|
|
- "rpm_sharutils_result.rc == 0"
|
|
|
|
- name: uninstall sos and sharutils
|
|
yum: name=sos,sharutils state=removed
|
|
|
|
- name: install non-existent rpm
|
|
yum: name="{{ item }}"
|
|
with_items:
|
|
- does-not-exist
|
|
register: non_existent_rpm
|
|
ignore_errors: True
|
|
|
|
- name: check non-existent rpm install failed
|
|
assert:
|
|
that:
|
|
- non_existent_rpm|failed
|