Allow all of yum version compare operators (#54603)

* Allow all of yum version compare operators

* * yum: name="foo >= VERSION" integration test
* changelog fragment
This commit is contained in:
Robert Osowiecki 2019-04-08 10:34:21 +02:00 committed by Martin Krizek
parent 221da3e8b1
commit 1532e31ec0
3 changed files with 60 additions and 6 deletions

View file

@ -0,0 +1,3 @@
---
bugfixes:
- "yum allows comparison operators like '>=' for selecting package version"

View file

@ -101,12 +101,13 @@ class YumDnf(with_metaclass(ABCMeta, object)):
# Fail if someone passed a space separated string # Fail if someone passed a space separated string
# https://github.com/ansible/ansible/issues/46301 # https://github.com/ansible/ansible/issues/46301
if any((' ' in name and '@' not in name and '==' not in name for name in self.names)): for name in self.names:
module.fail_json( if ' ' in name and not any(spec in name for spec in ['@', '>', '<', '=']):
msg='It appears that a space separated string of packages was passed in ' module.fail_json(
'as an argument. To operate on several packages, pass a comma separated ' msg='It appears that a space separated string of packages was passed in '
'string of packages or a list of packages.' 'as an argument. To operate on several packages, pass a comma separated '
) 'string of packages or a list of packages.'
)
# Sanity checking for autoremove # Sanity checking for autoremove
if self.state is None: if self.state is None:

View file

@ -589,6 +589,56 @@
when: ansible_pkg_mgr == 'yum' when: ansible_pkg_mgr == 'yum'
# https://github.com/ansible/ansible/pull/54603
- block:
- name: Install foo < 1.1
yum:
name: "foo < 1.1"
state: present
register: yum_result
- name: Check foo with rpm
shell: rpm -q foo
register: rpm_result
- name: Verify installation
assert:
that:
- "yum_result.changed"
- "rpm_result.stdout.startswith('foo-1.0')"
- name: Install foo >= 1.1
yum:
name: "foo >= 1.1"
state: present
register: yum_result
- name: Check foo with rpm
shell: rpm -q foo
register: rpm_result
- name: Verify installation
assert:
that:
- "yum_result.changed"
- "rpm_result.stdout.startswith('foo-1.1')"
- name: Verify yum module outputs
assert:
that:
- "'msg' in yum_result"
- "'rc' in yum_result"
- "'results' in yum_result"
always:
- name: Clean up
yum:
name: foo
state: absent
when: ansible_pkg_mgr == 'yum'
# https://github.com/ansible/ansible/issues/45250 # https://github.com/ansible/ansible/issues/45250
- block: - block:
- name: Install foo-1.0, foo-bar-1.0, bar-1.0 - name: Install foo-1.0, foo-bar-1.0, bar-1.0