6d78fc4f90
This currently installs with pip --user which cases problems if you try to run this version of tox as another user. This is done in system-config, for example, where we run tox with "become: yes" to run testinfra. By installing tox into a venv, we can call it as another user and it just works because it's all encapsulated in the venv. We use the virtualenv commands exported by ensure-pip to create this. I think the original motivation for installing tox like this was to ensure it is done without sudo permissions. This also doesn't require permissions, but ensures the resulting tox_executable is able to be executed in more contexts. Needed-By: https://review.opendev.org/712819 Change-Id: Iebee8cb72cce7944c537fdb91b6c98ed51878661
54 lines
1.6 KiB
YAML
54 lines
1.6 KiB
YAML
- hosts: all
|
|
name: Remove any pre-installed tox
|
|
tasks:
|
|
- name: Remove tox package with pip
|
|
shell: pip uninstall -y tox
|
|
become: true
|
|
failed_when: false
|
|
- name: Remove tox package with pip3
|
|
shell: pip3 uninstall -y tox
|
|
become: true
|
|
failed_when: false
|
|
- name: Verify tox is not installed
|
|
command: "tox --version"
|
|
register: result
|
|
failed_when: result.rc == 0
|
|
|
|
- hosts: all
|
|
name: Test ensure-tox installs into user environment
|
|
tasks:
|
|
- name: Verify tox is not installed
|
|
command: "tox --version"
|
|
register: result
|
|
failed_when: result.rc == 0
|
|
- name: Run ensure-tox with tox not installed
|
|
include_role:
|
|
name: ensure-tox
|
|
- name: Verify tox_executable is set
|
|
assert:
|
|
that:
|
|
- tox_executable == "{{ ansible_user_dir }}/.local/tox/bin/tox"
|
|
- name: Verify tox is installed
|
|
command: "{{ tox_executable }} --version"
|
|
register: result
|
|
failed_when: result.rc != 0
|
|
|
|
- hosts: all
|
|
name: Test ensure-tox when tox_executable is set to an already installed tox
|
|
tasks:
|
|
- name: Install tox inside a virtualenv
|
|
pip:
|
|
name: tox
|
|
virtualenv: "{{ ansible_user_dir }}/tox-venv"
|
|
virtualenv_command: "{{ ensure_pip_virtualenv_command }}"
|
|
- name: Run ensure-tox pointing to an already installed tox
|
|
include_role:
|
|
name: ensure-tox
|
|
vars:
|
|
tox_executable: "{{ ansible_user_dir }}/tox-venv/bin/tox"
|
|
- name: Verify tox_executable is set to the virtualenv tox
|
|
assert:
|
|
that:
|
|
- tox_executable == '{{ ansible_user_dir}}/tox-venv/bin/tox'
|
|
|