Merge "Update tox configuration"
This commit is contained in:
commit
fb231fef53
@ -1,11 +1,9 @@
|
||||
ansible>1.9,<2.0,!=1.9.6
|
||||
ansible-lint>=2.0.3,<=2.3.6
|
||||
bashate==0.5.0 # Apache-2.0
|
||||
coverage<=4.0.3 # Apache-2.0
|
||||
flake8==2.2.4
|
||||
hacking>=0.10.0,<0.11
|
||||
mccabe==0.2.1 # capped for flake8
|
||||
mock == 2.0.0
|
||||
mock==2.0.0
|
||||
pep8==1.5.7
|
||||
pyflakes==0.8.1
|
||||
virtualenv>=14.0.0
|
||||
|
184
tox.ini
184
tox.ini
@ -1,42 +1,69 @@
|
||||
[tox]
|
||||
minversion = 1.6
|
||||
minversion = 2.0
|
||||
skipsdist = True
|
||||
envlist = docs,linters,releasenotes
|
||||
|
||||
|
||||
[testenv]
|
||||
usedevelop = True
|
||||
install_command = pip install -U {opts} {packages}
|
||||
setenv = VIRTUAL_ENV={envdir}
|
||||
deps = -r{toxinidir}/test-requirements.txt
|
||||
whitelist_externals = bash
|
||||
basepython = python2.7
|
||||
install_command =
|
||||
pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages}
|
||||
deps =
|
||||
-r{toxinidir}/test-requirements.txt
|
||||
passenv =
|
||||
HOME
|
||||
http_proxy
|
||||
HTTP_PROXY
|
||||
https_proxy
|
||||
HTTPS_PROXY
|
||||
no_proxy
|
||||
NO_PROXY
|
||||
whitelist_externals =
|
||||
bash
|
||||
rm
|
||||
sudo
|
||||
setenv =
|
||||
VIRTUAL_ENV={envdir}
|
||||
|
||||
[testenv:releasenotes]
|
||||
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
||||
|
||||
[testenv:docs]
|
||||
commands=
|
||||
bash -c "rm -rf doc/build"
|
||||
python setup.py build_sphinx
|
||||
|
||||
|
||||
[testenv:releasenotes]
|
||||
# NOTE(sdague): this target does not use constraints because
|
||||
# upstream infra does not yet support it. Once that's fixed, we can
|
||||
# drop the install_command.
|
||||
install_command =
|
||||
pip install -U --force-reinstall {opts} {packages}
|
||||
commands =
|
||||
sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
||||
|
||||
|
||||
# environment used by the -infra templated docs job
|
||||
[testenv:venv]
|
||||
deps = -r{toxinidir}/test-requirements.txt
|
||||
commands = {posargs}
|
||||
# NOTE(jaegerandi): this target does not use constraints because
|
||||
# upstream infra does not yet support it. Once that's fixed, we can
|
||||
# drop the install_command.
|
||||
install_command =
|
||||
pip install -U --force-reinstall {opts} {packages}
|
||||
commands =
|
||||
{posargs}
|
||||
|
||||
|
||||
# Run hacking/flake8 check for all python files
|
||||
[testenv:pep8]
|
||||
commands =
|
||||
bash -c "grep -Irl \
|
||||
-e '!/usr/bin/env python' \
|
||||
-e '!/bin/python' \
|
||||
-e '!/usr/bin/python' \
|
||||
--exclude-dir '.*' \
|
||||
--exclude-dir 'doc' \
|
||||
--exclude-dir '*.egg' \
|
||||
--exclude-dir '*.egg-info' \
|
||||
--exclude-dir '*templates' \
|
||||
--exclude 'tox.ini' \
|
||||
--exclude '*.sh' \
|
||||
# Run hacking/flake8 check for all python files
|
||||
bash -c "grep --recursive --binary-files=without-match \
|
||||
--files-with-match '^.!.*python$' \
|
||||
--exclude-dir .eggs \
|
||||
--exclude-dir .git \
|
||||
--exclude-dir .tox \
|
||||
--exclude-dir *.egg-info \
|
||||
--exclude-dir doc \
|
||||
{toxinidir} | xargs flake8 --verbose"
|
||||
|
||||
|
||||
@ -47,48 +74,77 @@ commands =
|
||||
# H303 No wildcard (*) import.
|
||||
ignore=F403,H303
|
||||
|
||||
|
||||
[testenv:bashate]
|
||||
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)
|
||||
# E006: Line longer than 79 columns (as many scripts use jinja
|
||||
# templating, this is very difficult)
|
||||
# E040: Syntax error determined using `bash -n` (as many scripts
|
||||
# use jinja templating, this will often fail and the syntax
|
||||
# error will be discovered in execution anyway)
|
||||
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,E006,E040"
|
||||
# Run bashate check for all bash scripts
|
||||
# Ignores the following rules:
|
||||
# E003: Indent not multiple of 4 (we prefer to use multiples of 2)
|
||||
# E006: Line longer than 79 columns (as many scripts use jinja
|
||||
# templating, this is very difficult)
|
||||
# E040: Syntax error determined using `bash -n` (as many scripts
|
||||
# use jinja templating, this will often fail and the syntax
|
||||
# error will be discovered in execution anyway)
|
||||
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,E006,E040"
|
||||
|
||||
|
||||
[testenv:ansible]
|
||||
deps =
|
||||
{[testenv]deps}
|
||||
ansible==2.1.0
|
||||
ansible-lint>=2.7.0,<3.0.0
|
||||
setenv =
|
||||
{[testenv]setenv}
|
||||
ANSIBLE_HOST_KEY_CHECKING = False
|
||||
ANSIBLE_SSH_CONTROL_PATH = /tmp/%%h-%%r
|
||||
ANSIBLE_ACTION_PLUGINS = {homedir}/.ansible/roles/plugins/action
|
||||
ANSIBLE_CALLBACK_PLUGINS = {homedir}/.ansible/roles/plugins/callback
|
||||
ANSIBLE_FILTER_PLUGINS = {homedir}/.ansible/roles/plugins/filter
|
||||
ANSIBLE_LOOKUP_PLUGINS = {homedir}/.ansible/roles/plugins/lookup
|
||||
ANSIBLE_LIBRARY = {homedir}/.ansible/roles/plugins/library
|
||||
ANSIBLE_ROLES_PATH = {homedir}/.ansible/roles
|
||||
commands =
|
||||
rm -rf {homedir}/.ansible
|
||||
ansible-galaxy install \
|
||||
--role-file={toxinidir}/ansible-role-requirements.yml \
|
||||
--force
|
||||
|
||||
|
||||
[testenv:ansible-lint]
|
||||
deps =
|
||||
{[testenv:ansible]deps}
|
||||
setenv =
|
||||
{[testenv:ansible]setenv}
|
||||
commands =
|
||||
# Perform an Ansible lint check
|
||||
bash -c "ansible-lint {toxinidir}/playbooks/*.yml"
|
||||
{[testenv:ansible]commands}
|
||||
# Perform an Ansible lint check
|
||||
ansible-lint --exclude {homedir}/.ansible/roles/sshd \
|
||||
{toxinidir}/tests/bootstrap-aio.yml
|
||||
ansible-lint {toxinidir}/playbooks/setup-everything.yml
|
||||
|
||||
|
||||
[testenv:ansible-syntax]
|
||||
deps =
|
||||
{[testenv:ansible]deps}
|
||||
setenv =
|
||||
{[testenv:ansible]setenv}
|
||||
commands =
|
||||
# Perform an Ansible syntax check
|
||||
bash -c "mkdir -p {envtmpdir}/ansible; \
|
||||
export ANSIBLE_CONFIG={envtmpdir}/ansible/ansible.cfg; \
|
||||
export ANSIBLE_ROLES_PATH={envtmpdir}/ansible/roles; \
|
||||
sed 's|/etc/ansible|{envtmpdir}/ansible|' \
|
||||
{toxinidir}/tests/ansible.cfg | \
|
||||
tee {envtmpdir}/ansible/ansible.cfg; \
|
||||
sed 's|path: /etc/ansible|path: {envtmpdir}/ansible|' \
|
||||
{toxinidir}/ansible-role-requirements.yml | \
|
||||
tee {envtmpdir}/ansible/ansible-role-requirements.yml; \
|
||||
ansible-galaxy install \
|
||||
--role-file={envtmpdir}/ansible/ansible-role-requirements.yml \
|
||||
--roles-path={envtmpdir}/ansible/roles \
|
||||
--force; \
|
||||
{[testenv:ansible]commands}
|
||||
# Perform an Ansible syntax check
|
||||
ansible-playbook -i 'localhost ansible-connection=local,' \
|
||||
--syntax-check \
|
||||
--list-tasks \
|
||||
-e 'force_containers_destroy=yes' \
|
||||
{toxinidir}/playbooks/*.yml"
|
||||
--syntax-check \
|
||||
--list-tasks \
|
||||
{toxinidir}/tests/bootstrap-aio.yml
|
||||
ansible-playbook -i 'localhost ansible-connection=local,' \
|
||||
--syntax-check \
|
||||
--list-tasks \
|
||||
-e 'force_containers_destroy=yes' \
|
||||
{toxinidir}/playbooks/setup-everything.yml
|
||||
|
||||
|
||||
[testenv:inventory]
|
||||
# Use a fixed seed since some inventory tests rely on specific ordering
|
||||
@ -100,10 +156,20 @@ commands =
|
||||
coverage run {toxinidir}/tests/test_inventory.py
|
||||
coverage report --show-missing --include={toxinidir}/playbooks/inventory/*
|
||||
|
||||
|
||||
[testenv:linters]
|
||||
deps =
|
||||
{[testenv:ansible]deps}
|
||||
setenv =
|
||||
{[testenv:ansible]setenv}
|
||||
commands =
|
||||
{[testenv:pep8]commands}
|
||||
{[testenv:bashate]commands}
|
||||
{[testenv:ansible-lint]commands}
|
||||
{[testenv:ansible-syntax]commands}
|
||||
{[testenv:inventory]commands}
|
||||
{[testenv:pep8]commands}
|
||||
{[testenv:bashate]commands}
|
||||
{[testenv:ansible-lint]commands}
|
||||
{[testenv:ansible-syntax]commands}
|
||||
{[testenv:inventory]commands}
|
||||
|
||||
|
||||
[testenv:functional]
|
||||
commands =
|
||||
scripts/gate-check-commit.sh
|
||||
|
Loading…
x
Reference in New Issue
Block a user