![Albin Vass](/assets/img/avatar_default.png)
Since tox_envlist has a default value it cannot be undefined so the fail task will never run. Instead handle the case when tox_envlist is an empty string by getting the default configured envlist from tox. Also handle the casewhen tox_envlist is 'ALL'. This also updates tox_install_sibling_packages to correctly handle multiple testenvs and uses configuration supplied by 'tox --showconfig -e <envlist>' instead of guessing where the envdir and logdir are located. We also cannot run tox inside python because it gets complicated to know which tox_executable we should call during the python test cases so run these commands in ansible and pass the output to tox_install_sibling_packages. Since role params have higher precedence than set_fact we set an internal _tox_envlist fact that is a comma separated list of testenvs that should be run. Change-Id: I9e5a1b041f653cbcff7b8ed62e4a95a0a040fdd7
36 lines
1.2 KiB
YAML
36 lines
1.2 KiB
YAML
# Install sibling with tox so we can replace them later
|
|
- name: Run tox without tests
|
|
command: >-
|
|
{{ tox_executable }}
|
|
--notest
|
|
-e{{ _tox_envlist }}
|
|
args:
|
|
chdir: "{{ zuul_work_dir }}"
|
|
environment: "{{ tox_environment|combine(tox_constraints_env|default({})) }}"
|
|
|
|
# This is needed since python < 3.2 can't parse ini files from strings
|
|
- name: Create a tempfile to save tox showconfig
|
|
tempfile:
|
|
register: _tox_show_config_tempfile
|
|
|
|
# py27, py35..py38 etc are generated on the fly if not
|
|
# explicitly added to tox.ini, so force tox to generate
|
|
# the config for the testenvs we're using.
|
|
- name: Get tox envlist config
|
|
shell: "{{ tox_executable }} --showconfig -e {{ _tox_envlist }} > {{ _tox_show_config_tempfile.path }}"
|
|
args:
|
|
chdir: "{{ zuul_work_dir }}"
|
|
|
|
- name: Install any sibling python packages
|
|
tox_install_sibling_packages:
|
|
tox_envlist: "{{ _tox_envlist }}"
|
|
tox_show_config: "{{ _tox_show_config_tempfile.path }}"
|
|
tox_constraints_file: "{{ tox_constraints_file | default(omit) }}"
|
|
project_dir: "{{ zuul_work_dir }}"
|
|
projects: "{{ zuul.projects.values() | selectattr('required') | list }}"
|
|
|
|
- name: Remove tempfile
|
|
file:
|
|
state: absent
|
|
path: "{{ _tox_show_config_tempfile.path }}"
|