zuul-jobs/tox.ini
Sorin Sbarnea 3febd1423a Enable progressive mode with ansible-lint
Makes use of newer feature which produces failures only when current
commit is adding new violations, exiting ones being considered
as already known.

To prove it works, it also removes the E208 from warn, making it
an error. Still, the final linting result is a success because
these violations were already present before current commit.

Change-Id: Ia858f2a3e71d9634e9d90e890d82714105e8f8c9
2020-11-07 03:20:19 +01:00

90 lines
2.7 KiB
INI

[tox]
minversion = 1.6
skipsdist = True
envlist = linters
ignore_basepython_conflict = True
[testenv]
basepython = python3
install_command = pip install {opts} {packages}
deps = -r{toxinidir}/test-requirements.txt
commands = stestr run {posargs}
stestr slowest
[testenv:py27]
deps =
-r{toxinidir}/test-requirements.txt
-c{toxinidir}/test-constraints.txt
basepython = python2.7
[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
setenv =
ANSIBLE_LIBRARY= {toxinidir}/tests/fake-ansible
whitelist_externals = bash
deps =
-r{toxinidir}/linters-requirements.txt
commands =
flake8 {posargs}
yamllint -s -f parsable .
python -m ansiblelint --version
python -m ansiblelint {env:ANSIBLELINT_OPTS:--progressive}
# Ansible Syntax Check
bash -c "find playbooks -type f -regex '.*.ya?ml' ! -regex '.*vars\/.*' -exec \
ansible-playbook --syntax-check -i {toxinidir}/tests/inventory \{\} + > /dev/null"
{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 --quiet || \{ git status --porcelain; echo 'ERROR: git in dirty status, reporting as failure'; 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