From c06f4424092b4cd5a340d89b0fb5cb39c46bc5ed Mon Sep 17 00:00:00 2001 From: Matt Clay Date: Sun, 1 Mar 2020 11:25:58 -0800 Subject: [PATCH] Fix ansible-test import sanity test venv setup. --- .../fragments/ansible-test-venv-pkg-resources.yaml | 2 ++ test/lib/ansible_test/_internal/sanity/import.py | 11 +++++++++++ 2 files changed, 13 insertions(+) create mode 100644 changelogs/fragments/ansible-test-venv-pkg-resources.yaml diff --git a/changelogs/fragments/ansible-test-venv-pkg-resources.yaml b/changelogs/fragments/ansible-test-venv-pkg-resources.yaml new file mode 100644 index 00000000000..5065e50d04d --- /dev/null +++ b/changelogs/fragments/ansible-test-venv-pkg-resources.yaml @@ -0,0 +1,2 @@ +bugfixes: + - ansible-test - Make sure import sanity test virtual environments also remove ``pkg-resources`` if it is not removed by uninstalling ``setuptools``. diff --git a/test/lib/ansible_test/_internal/sanity/import.py b/test/lib/ansible_test/_internal/sanity/import.py index 319b9d23b02..7d566fd9ee0 100644 --- a/test/lib/ansible_test/_internal/sanity/import.py +++ b/test/lib/ansible_test/_internal/sanity/import.py @@ -125,6 +125,17 @@ class ImportTest(SanityMultipleVersion): run_command(args, generate_pip_install(virtualenv_pip, 'sanity.import', packages=['setuptools']), env=env, capture=capture_pip) run_command(args, generate_pip_install(virtualenv_pip, 'sanity.import', packages=['coverage']), env=env, capture=capture_pip) + try: + # In some environments pkg_resources is installed as a separate pip package which needs to be removed. + # For example, using Python 3.8 on Ubuntu 18.04 a virtualenv is created with only pip and setuptools. + # However, a venv is created with an additional pkg-resources package which is independent of setuptools. + # Making sure pkg-resources is removed preserves the import test consistency between venv and virtualenv. + # Additionally, in the above example, the pyparsing package vendored with pkg-resources is out-of-date and generates deprecation warnings. + # Thus it is important to remove pkg-resources to prevent system installed packages from generating deprecation warnings. + run_command(args, virtualenv_pip + ['uninstall', '--disable-pip-version-check', '-y', 'pkg-resources'], env=env, capture=capture_pip) + except SubprocessError: + pass + run_command(args, virtualenv_pip + ['uninstall', '--disable-pip-version-check', '-y', 'setuptools'], env=env, capture=capture_pip) run_command(args, virtualenv_pip + ['uninstall', '--disable-pip-version-check', '-y', 'pip'], env=env, capture=capture_pip)