dnf: handle error when latest pkg not found (#39720)

* dnf: handle error when latest pkg not found

* Add integration test
This commit is contained in:
Martin Krizek 2018-05-09 10:05:00 +02:00 committed by GitHub
parent 3c389aee73
commit bf702e6d88
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 2 deletions

View file

@ -393,7 +393,10 @@ def ensure(module, base, state, names, autoremove):
# best effort causes to install the latest package # best effort causes to install the latest package
# even if not previously installed # even if not previously installed
base.conf.best = True base.conf.best = True
base.install(pkg_spec) try:
base.install(pkg_spec)
except dnf.exceptions.MarkingError as e:
failures.append((pkg_spec, to_native(e)))
else: else:
# state == absent # state == absent

View file

@ -192,7 +192,7 @@
- sharutils - sharutils
state: removed state: removed
- name: install non-existent rpm - name: install non-existent rpm
dnf: dnf:
name: "{{ item }}" name: "{{ item }}"
with_items: with_items:
@ -410,3 +410,19 @@
that: that:
- "'changed' in dnf_result" - "'changed' in dnf_result"
- "'results' in dnf_result" - "'results' in dnf_result"
# https://github.com/ansible/ansible/issues/39704
- name: install non-existent rpm, state=latest
dnf:
name: non-existent-rpm
state: latest
ignore_errors: yes
register: dnf_result
- name: verify the result
assert:
that:
- "dnf_result is failed"
- "'non-existent-rpm' in dnf_result['failures'][0]"
- "'no package matched' in dnf_result['failures'][0]"
- "'Failed to install some of the specified packages' in dnf_result['msg']"