ansible/test/integration/roles/test_yum/tasks/yum.yml
Will Thames eb2a3a91a8 task_result _check_key should handle empty results (#16766)
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
2016-08-04 17:13:33 -05:00

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