diff --git a/tests/integration/targets/setup_pip_scripts_path/tasks/main.yml b/tests/integration/targets/setup_pip_scripts_path/tasks/main.yml new file mode 100644 index 0000000000..f6c1d1178a --- /dev/null +++ b/tests/integration/targets/setup_pip_scripts_path/tasks/main.yml @@ -0,0 +1,39 @@ +--- +#################################################################### +# WARNING: These are designed specifically for Ansible tests # +# and should not be used as examples of how to write Ansible roles # +#################################################################### + +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +- name: Get facts + setup: + when: ansible_facts == {} + +# pip._internal.locations.get_scheme() reflects pip's actual install scheme (e.g. RHEL root → /usr/local/bin), +# which can differ from sysconfig.get_path('scripts') (e.g. RHEL → /usr/bin). +- name: Get pip scripts path from current Python interpreter + ansible.builtin.command: + argv: + - "{{ ansible_python_interpreter }}" + - -c + - | + import sys + try: + from pip._internal.locations import get_scheme + print(get_scheme('pip').scripts) + except Exception: + import sysconfig + print(sysconfig.get_path('scripts')) + register: _pip_scripts_path + changed_when: false + +- name: Build pip_path from env PATH and Python scripts dir + vars: + pip_path_list: > + {{ [_pip_scripts_path.stdout.strip()] + ansible_facts.env.PATH.split(":") }} + ansible.builtin.set_fact: + pip_scripts_path: >- + {{ pip_path_list | join(":") }} diff --git a/tests/integration/targets/supervisorctl/aliases b/tests/integration/targets/supervisorctl/aliases index 163ea6ea82..326a499c3e 100644 --- a/tests/integration/targets/supervisorctl/aliases +++ b/tests/integration/targets/supervisorctl/aliases @@ -4,5 +4,3 @@ azp/posix/2 destructive -skip/rhel # TODO executables are installed in /usr/local/bin, which isn't part of $PATH -skip/macos # TODO executables are installed in /Library/Frameworks/Python.framework/Versions/3.11/bin, which isn't part of $PATH diff --git a/tests/integration/targets/supervisorctl/meta/main.yml b/tests/integration/targets/supervisorctl/meta/main.yml index ca1915e05c..22c8ae75e7 100644 --- a/tests/integration/targets/supervisorctl/meta/main.yml +++ b/tests/integration/targets/supervisorctl/meta/main.yml @@ -6,3 +6,4 @@ dependencies: - setup_pkg_mgr - setup_remote_tmp_dir + - setup_pip_scripts_path diff --git a/tests/integration/targets/supervisorctl/tasks/main.yml b/tests/integration/targets/supervisorctl/tasks/main.yml index a84475306d..3945e7ea98 100644 --- a/tests/integration/targets/supervisorctl/tasks/main.yml +++ b/tests/integration/targets/supervisorctl/tasks/main.yml @@ -8,7 +8,10 @@ # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # SPDX-License-Identifier: GPL-3.0-or-later -- block: +- name: Install/Uninstall supervisorctl block + environment: + PATH: "{{ pip_scripts_path }}" + block: - tempfile: state: directory suffix: supervisorctl-tests