Revise all lint tests and add consolidated 'linters' tox environment
OpenStack-Infra has requested that lint tests be pipelined into the 'linters' tox target in order to make more efficient use of nodepool resources. This patch: - Ensures that a complete set of lints tests is available in individual tox targets. - Adds a 'linters' target which executes all the other lints tests. Change-Id: I98feb85a9a3a530f291c50bc46ec9c639327162a
This commit is contained in:
65
tox.ini
65
tox.ini
@@ -1,36 +1,30 @@
|
|||||||
[tox]
|
[tox]
|
||||||
minversion = 1.6
|
minversion = 1.6
|
||||||
skipsdist = True
|
skipsdist = True
|
||||||
envlist = docs,pep8,ansible-syntax,ansible-lint,functional
|
envlist = docs,linters,functional
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
usedevelop = True
|
usedevelop = True
|
||||||
install_command = pip install -U {opts} {packages}
|
install_command = pip install -U {opts} {packages}
|
||||||
setenv = VIRTUAL_ENV={envdir}
|
setenv = VIRTUAL_ENV={envdir}
|
||||||
deps = -r{toxinidir}/test-requirements.txt
|
deps = -r{toxinidir}/test-requirements.txt
|
||||||
commands =
|
commands = /usr/bin/find . -type f -name "*.pyc" -delete
|
||||||
/usr/bin/find . -type f -name "*.pyc" -delete
|
|
||||||
ansible-galaxy install \
|
|
||||||
--role-file=ansible-role-requirements.yml \
|
|
||||||
--ignore-errors \
|
|
||||||
--force
|
|
||||||
|
|
||||||
[testenv:docs]
|
[testenv:docs]
|
||||||
commands = python setup.py build_sphinx
|
commands=
|
||||||
|
python setup.py build_sphinx
|
||||||
|
|
||||||
# environment used by the -infra templated docs job
|
# environment used by the -infra templated docs job
|
||||||
[testenv:venv]
|
[testenv:venv]
|
||||||
deps = -r{toxinidir}/test-requirements.txt
|
deps = -r{toxinidir}/test-requirements.txt
|
||||||
commands = {posargs}
|
commands = {posargs}
|
||||||
|
|
||||||
# Run various lint checks
|
|
||||||
[testenv:pep8]
|
[testenv:pep8]
|
||||||
deps =
|
deps =
|
||||||
bashate
|
|
||||||
flake8
|
flake8
|
||||||
whitelist_externals = bash
|
whitelist_externals = bash
|
||||||
# Run hacking/flake8 check for all python files
|
|
||||||
commands =
|
commands =
|
||||||
|
# Run hacking/flake8 check for all python files
|
||||||
bash -c "grep -Irl \
|
bash -c "grep -Irl \
|
||||||
-e '!/usr/bin/env python' \
|
-e '!/usr/bin/env python' \
|
||||||
-e '!/bin/python' \
|
-e '!/bin/python' \
|
||||||
@@ -43,26 +37,30 @@ commands =
|
|||||||
--exclude '*.sh' \
|
--exclude '*.sh' \
|
||||||
{toxinidir} | xargs flake8 --verbose"
|
{toxinidir} | xargs flake8 --verbose"
|
||||||
|
|
||||||
# Run bashate check for all bash scripts
|
|
||||||
# Ignores the following rules:
|
|
||||||
# E003: Indent not multiple of 4 (we prefer to use multiples of 2)
|
|
||||||
bash -c "grep -Irl \
|
|
||||||
-e '!/usr/bin/env bash' \
|
|
||||||
-e '!/bin/bash' \
|
|
||||||
-e '!/bin/sh' \
|
|
||||||
--exclude-dir '.*' \
|
|
||||||
--exclude-dir '*.egg' \
|
|
||||||
--exclude-dir '*.egg-info' \
|
|
||||||
--exclude 'tox.ini' \
|
|
||||||
{toxinidir} | xargs bashate --verbose --ignore=E003"
|
|
||||||
|
|
||||||
[flake8]
|
[flake8]
|
||||||
# Ignores the following rules due to how ansible modules work in general
|
# Ignores the following rules due to how ansible modules work in general
|
||||||
# F403 'from ansible.module_utils.basic import *' used; unable to detect undefined names
|
# F403 'from ansible.module_utils.basic import *' used;
|
||||||
|
# unable to detect undefined names
|
||||||
# H303 No wildcard (*) import.
|
# H303 No wildcard (*) import.
|
||||||
ignore=F403,H303
|
ignore=F403,H303
|
||||||
|
|
||||||
|
[testenv:bashate]
|
||||||
|
deps =
|
||||||
|
bashate
|
||||||
|
whitelist_externals = bash
|
||||||
|
commands =
|
||||||
|
# Run bashate check for all bash scripts
|
||||||
|
# Ignores the following rules:
|
||||||
|
# E003: Indent not multiple of 4 (we prefer to use multiples of 2)
|
||||||
|
bash -c "grep --recursive --binary-files=without-match \
|
||||||
|
--files-with-match '^.!.*\(ba\)\?sh$' \
|
||||||
|
--exclude-dir .tox \
|
||||||
|
--exclude-dir .git \
|
||||||
|
{toxinidir} | xargs bashate --error . --verbose --ignore=E003"
|
||||||
|
|
||||||
[testenv:ansible-syntax]
|
[testenv:ansible-syntax]
|
||||||
|
deps =
|
||||||
|
ansible>1.9,<2.0
|
||||||
changedir = tests
|
changedir = tests
|
||||||
commands =
|
commands =
|
||||||
ansible-galaxy install \
|
ansible-galaxy install \
|
||||||
@@ -76,6 +74,9 @@ commands =
|
|||||||
test.yml
|
test.yml
|
||||||
|
|
||||||
[testenv:ansible-lint]
|
[testenv:ansible-lint]
|
||||||
|
deps =
|
||||||
|
ansible>1.9,<2.0
|
||||||
|
ansible-lint
|
||||||
changedir = tests
|
changedir = tests
|
||||||
commands =
|
commands =
|
||||||
ansible-galaxy install \
|
ansible-galaxy install \
|
||||||
@@ -94,3 +95,17 @@ commands =
|
|||||||
ansible-playbook -i inventory \
|
ansible-playbook -i inventory \
|
||||||
-e "rolename={toxinidir}" \
|
-e "rolename={toxinidir}" \
|
||||||
test.yml
|
test.yml
|
||||||
|
|
||||||
|
[testenv:linters]
|
||||||
|
deps =
|
||||||
|
{[testenv:pep8]deps}
|
||||||
|
{[testenv:bashate]deps}
|
||||||
|
{[testenv:ansible-lint]deps}
|
||||||
|
# note that the ansible-syntax deps are omitted on purpose as the
|
||||||
|
# ansible-lint env contains duplicate items in its dep list
|
||||||
|
whitelist_externals = bash
|
||||||
|
commands =
|
||||||
|
{[testenv:pep8]commands}
|
||||||
|
{[testenv:bashate]commands}
|
||||||
|
{[testenv:ansible-lint]commands}
|
||||||
|
{[testenv:ansible-syntax]commands}
|
||||||
|
|||||||
Reference in New Issue
Block a user