1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Fix detection of installed cargo packages with hyphens in name (#4052)

* Fix detection of installed cargo packages with hyphens in name

* Add changelog fragment

* Fix outdated package detection

* Add changelog fragment for af4fae72

* One more thing

* Add idempotency tests
This commit is contained in:
jack1142 2022-01-18 12:12:48 +01:00 committed by GitHub
parent 5540dab382
commit c18fdb43d7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 4 deletions

View file

@ -0,0 +1,3 @@
bugfixes:
- cargo - fix incorrectly reported changed status for packages with a name containing a hyphen (https://github.com/ansible-collections/community.general/issues/4044, https://github.com/ansible-collections/community.general/pull/4052).
- cargo - fix detection of outdated packages when ``state=latest`` (https://github.com/ansible-collections/community.general/pull/4052).

View file

@ -112,7 +112,7 @@ class Cargo(object):
cmd = ["install", "--list"] cmd = ["install", "--list"]
data, dummy = self._exec(cmd, True, False, False) data, dummy = self._exec(cmd, True, False, False)
package_regex = re.compile(r"^(\w+) v(.+):$") package_regex = re.compile(r"^([\w\-]+) v(.+):$")
installed = {} installed = {}
for line in data.splitlines(): for line in data.splitlines():
package_info = package_regex.match(line) package_info = package_regex.match(line)
@ -136,11 +136,11 @@ class Cargo(object):
installed_version = self.get_installed().get(name) installed_version = self.get_installed().get(name)
cmd = ["search", name, "--limit", "1"] cmd = ["search", name, "--limit", "1"]
data = self._exec(cmd, True, False, False) data, dummy = self._exec(cmd, True, False, False)
match = re.search(r'"(.+)"', data) match = re.search(r'"(.+)"', data)
if match: if match:
latest_version = match[1] latest_version = match.group(1)
return installed_version != latest_version return installed_version != latest_version

View file

@ -5,21 +5,42 @@
version: 0.1.0 version: 0.1.0
register: install_helloworld_010 register: install_helloworld_010
- name: Install application helloworld-yliu 0.1.0 (idempotent)
community.general.cargo:
name: helloworld-yliu
version: 0.1.0
register: install_helloworld_010_idem
- name: Upgrade helloworld-yliu 0.1.0 - name: Upgrade helloworld-yliu 0.1.0
community.general.cargo: community.general.cargo:
name: helloworld-yliu name: helloworld-yliu
state: latest state: latest
register: upgrade_helloworld_010 register: upgrade_helloworld_010
- name: Upgrade helloworld-yliu 0.1.0 (idempotent)
community.general.cargo:
name: helloworld-yliu
state: latest
register: upgrade_helloworld_010_idem
- name: Downgrade helloworld-yliu 0.1.0 - name: Downgrade helloworld-yliu 0.1.0
community.general.cargo: community.general.cargo:
name: helloworld-yliu name: helloworld-yliu
version: 0.1.0 version: 0.1.0
register: downgrade_helloworld_010 register: downgrade_helloworld_010
- name: Check assertions helloworld-yliu 0.1.0 - name: Downgrade helloworld-yliu 0.1.0 (idempotent)
community.general.cargo:
name: helloworld-yliu
version: 0.1.0
register: downgrade_helloworld_010_idem
- name: Check assertions helloworld-yliu
assert: assert:
that: that:
- install_helloworld_010 is changed - install_helloworld_010 is changed
- install_helloworld_010_idem is not changed
- upgrade_helloworld_010 is changed - upgrade_helloworld_010 is changed
- upgrade_helloworld_010_idem is not changed
- downgrade_helloworld_010 is changed - downgrade_helloworld_010 is changed
- downgrade_helloworld_010_idem is not changed