summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changelogs/fragments/47689-yum-fix-version-syntax.yaml2
-rw-r--r--lib/ansible/module_utils/yumdnf.py2
-rw-r--r--test/integration/targets/yum/tasks/repo.yml32
3 files changed, 35 insertions, 1 deletions
diff --git a/changelogs/fragments/47689-yum-fix-version-syntax.yaml b/changelogs/fragments/47689-yum-fix-version-syntax.yaml
new file mode 100644
index 0000000000..afd7c61d7a
--- /dev/null
+++ b/changelogs/fragments/47689-yum-fix-version-syntax.yaml
@@ -0,0 +1,2 @@
+bugfixes:
+ - yum - fix "package == version" syntax (https://github.com/ansible/ansible/pull/47744)
diff --git a/lib/ansible/module_utils/yumdnf.py b/lib/ansible/module_utils/yumdnf.py
index b60c1e4248..a158e89157 100644
--- a/lib/ansible/module_utils/yumdnf.py
+++ b/lib/ansible/module_utils/yumdnf.py
@@ -97,7 +97,7 @@ class YumDnf(with_metaclass(ABCMeta, object)):
# Fail if someone passed a space separated string
# https://github.com/ansible/ansible/issues/46301
- if any((' ' in name and '@' not in name for name in self.names)):
+ if any((' ' in name and '@' not in name and '==' not in name for name in self.names)):
module.fail_json(
msg='It appears that a space separated string of packages was passed in '
'as an argument. To operate on several packages, pass a comma separated '
diff --git a/test/integration/targets/yum/tasks/repo.yml b/test/integration/targets/yum/tasks/repo.yml
index 33fdd3b43f..3c8fe39b4e 100644
--- a/test/integration/targets/yum/tasks/repo.yml
+++ b/test/integration/targets/yum/tasks/repo.yml
@@ -556,3 +556,35 @@
name: foo
state: absent
when: not (ansible_distribution == "Fedora" and ansible_distribution_major_version|int < 26)
+
+# https://github.com/ansible/ansible/issues/47689
+- block:
+ - name: Install foo == 1.0
+ yum:
+ name: "foo == 1.0"
+ 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-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'