zuul-jobs/tox.ini
Clark Boylan 1f3567396e Update ansible versions used in unittesting
We were pinning ansible to 2.8 for unittesting but Zuul currently only
supports Ansible 8 and 9. Pin Ansible to 8 in order to better test what
we expect people are using in the wild. This will also enable the
testing of Zuul and Ansible and Zuul Jobs with newer python versions
like 3.12.

In order to run testing with Ansible 8 intsead of 2.8 we drop testing
against python2.7 and python3.8 as neither of them can install an
Ansible version this new.

Change-Id: Icd563def65dcfd40b174218cc4e2b94e0230c374
2024-06-07 10:40:33 +00:00

89 lines
2.9 KiB
INI

[tox]
minversion = 1.6
skipsdist = True
envlist = linters
ignore_basepython_conflict = True
# Necessary for python 2.7 support
requires =
virtualenv<20.22.0
[testenv]
basepython = python3
install_command = pip install {opts} {packages}
deps = -r{toxinidir}/test-requirements.txt
commands = stestr run {posargs}
stestr slowest
[testenv:bindep]
# Do not install any requirements. We want this to be fast and work even if
# system dependencies are missing, since it's used to tell you what system
# dependencies are missing! This also means that bindep must be installed
# separately, outside of the requirements files.
deps = bindep
commands = bindep test
[testenv:docs]
deps =
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/doc/requirements.txt
commands =
sphinx-build -E -W -d doc/build/doctrees -b html doc/source/ doc/build/html
[testenv:linters]
passenv =
# NOTE(pabelanger): if you'd like to run tox -elinters locally, you'll need
# to export ANSIBLE_ROLES_PATH pointing to the currect repos.
# see openstack-zuul-jobs-linters job for more information.
ANSIBLE_ROLES_PATH
TERM
setenv =
GIT_PAGER: cat
allowlist_externals =
bash
{toxinidir}/tools/check_jobs_documented.py
{toxinidir}/tools/update-test-platforms.py
deps =
-r{toxinidir}/linters-requirements.txt
commands =
bash -c "for f in $(find . -path './roles/*/library/*.py' | xargs); do echo Checking shebang on $f; if head -1 $f | grep -q '^\#!'; then echo $f 'starts with \#!, it should not as Ansible will choose the interpreter'; exit 1; fi; done"
flake8 {posargs}
yamllint -s -f parsable .
python -m ansiblelint --version
python -m ansiblelint {env:ANSIBLELINT_OPTS:-x command-instead-of-module,deprecated-command-syntax,no-handler}
# Ansible Syntax Check
{toxinidir}/tools/check_jobs_documented.py
{toxinidir}/tools/update-test-platforms.py
bash -c "(( $(find playbooks -name *.yml | wc -l) == 0)) || \{ echo 'Use .yaml'; exit 1; \}"
bash -c "(( $(find roles -name *.yml | wc -l) == 0)) || \{ echo 'Use .yaml'; exit 1; \}"
bash -c "git diff; git diff --quiet || \{ git status; echo 'ERROR: The commited content and the via update-test-platforms.py autogenerated content differ. Make sure these are the same.'; exit 1; \}"
[testenv:venv]
commands = {posargs}
[flake8]
# These are ignored intentionally in Zuul projects;
# please don't submit patches that solely correct them or enable them.
# E402 - ansible modules put documentation before imports. Align to ansible.
# W504 - line break after binary operator, we cannot have both
# W503 and W504 enabled
ignore = E124,E125,E129,E252,E402,E741,W503,W504,H
show-source = True
exclude =
.cache,
.venv,
.tox,
dist,
doc,
build,
*.egg,
# vendored files
roles/use-buildset-registry/module_utils/pytoml.py,
roles/use-buildset-registry/module_utils/remarshal.py
[testenv:update-test-platforms]
basepython = python3
deps =
ruamel.yaml>=0.16.7
commands =
python ./tools/update-test-platforms.py