[stable-2.7] pip - Fix check_mode for prerelease packages (#68690)

* pip - Fix check_mode for prerelease packages

Fixes #68592.

Signed-off-by: Rick Elrod <rick@elrod.me>
Co-authored-by: Matt Martz <matt@sivel.net>.
(cherry picked from commit 82c60db49b)

Co-authored-by: Rick Elrod <rick@elrod.me>
pull/69114/head
Rick Elrod 5 years ago committed by Matt Clay
parent 27e4023350
commit a5c671da74

@ -0,0 +1,2 @@
bugfixes:
- "pip - check_mode with ``state: present`` now returns the correct state for pre-release versioned packages"

@ -523,7 +523,7 @@ class Package:
if not self._plain_package:
return False
try:
return self._requirement.specifier.contains(version_to_test)
return self._requirement.specifier.contains(version_to_test, prereleases=True)
except AttributeError:
# old setuptools has no specifier, do fallback
version_to_test = LooseVersion(version_to_test)

@ -530,3 +530,38 @@
assert:
that: "'distribute' in remove_distribute.cmd"
when: ansible_python.version.major == 2
# https://github.com/ansible/ansible/issues/68592
# Handle pre-release version numbers in check_mode for already-installed
# packages.
# TODO: Limiting to py3 test boxes for now so the example of 'black' installs,
# we should probably find another package to use with a similar versioning
# scheme or make a small one and enable this test for py2 as well.
- block:
- name: Install a beta version of a package
pip:
name: black
version: 19.10b0
state: present
- name: Use check_mode and ensure that the package is shown as installed
check_mode: true
pip:
name: black
state: present
register: pip_prereleases
- name: Uninstall the beta package if we need to
pip:
name: black
version: 19.10b0
state: absent
when: pip_prereleases is changed
- assert:
that:
- pip_prereleases is successful
- pip_prereleases is not changed
- '"black==19.10b0" in pip_prereleases.stdout_lines'
when: ansible_python.version.major == 3

Loading…
Cancel
Save