1f3567396e
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
89 lines
2.9 KiB
INI
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
|