You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
210 lines
7.2 KiB
210 lines
7.2 KiB
[tox] |
|
envlist = docs,py37,pep8 |
|
minversion = 2.3.2 |
|
skipsdist = True |
|
|
|
[testenv] |
|
basepython = python3 |
|
setenv = VIRTUAL_ENV={envdir} |
|
OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true} |
|
OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:true} |
|
OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:true} |
|
PYTHONWARNINGS=default::DeprecationWarning,ignore::DeprecationWarning:distutils,ignore::DeprecationWarning:site |
|
passenv = TRACE_FAILONLY GENERATE_HASHES http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY TOX_ENV_SRC_MODULES |
|
usedevelop = True |
|
install_command = |
|
pip install {opts} {packages} |
|
deps = |
|
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} |
|
-r{toxinidir}/requirements.txt |
|
-r{toxinidir}/test-requirements.txt |
|
whitelist_externals = sh |
|
commands = |
|
{toxinidir}/tools/pip_install_src_modules.sh "{toxinidir}" |
|
stestr run {posargs} |
|
|
|
# there is also secret magic in ostestr which lets you run in a fail only |
|
# mode. To do this define the TRACE_FAILONLY environmental variable. |
|
|
|
[testenv:debug] |
|
envdir = {toxworkdir}/shared |
|
commands = oslo_debug_helper -t neutron/tests {posargs} |
|
|
|
[testenv:common] |
|
# Fake job to define environment variables shared between dsvm/non-dsvm jobs |
|
setenv = OS_TEST_TIMEOUT={env:OS_TEST_TIMEOUT:180} |
|
commands = false |
|
|
|
[testenv:dsvm] |
|
# Fake job to define environment variables shared between dsvm jobs |
|
setenv = OS_SUDO_TESTING=1 |
|
OS_ROOTWRAP_CMD=sudo {envdir}/bin/neutron-rootwrap {envdir}/etc/neutron/rootwrap.conf |
|
OS_ROOTWRAP_DAEMON_CMD=sudo {envdir}/bin/neutron-rootwrap-daemon {envdir}/etc/neutron/rootwrap.conf |
|
OS_FAIL_ON_MISSING_DEPS=1 |
|
OS_LOG_PATH={env:OS_LOG_PATH:/opt/stack/logs} |
|
commands = false |
|
|
|
[testenv:functional] |
|
setenv = {[testenv]setenv} |
|
{[testenv:common]setenv} |
|
OS_TEST_PATH=./neutron/tests/functional |
|
OS_LOG_PATH={env:OS_LOG_PATH:/opt/stack/logs} |
|
# Because of issue with stestr and Python3, we need to avoid too much output |
|
# to be produced during tests, so we will ignore python warnings here |
|
PYTHONWARNINGS=ignore |
|
deps = |
|
{[testenv]deps} |
|
-r{toxinidir}/neutron/tests/functional/requirements.txt |
|
|
|
[testenv:dsvm-functional] |
|
setenv = {[testenv:functional]setenv} |
|
{[testenv:dsvm]setenv} |
|
deps = |
|
{[testenv:functional]deps} |
|
commands = |
|
{toxinidir}/tools/deploy_rootwrap.sh {toxinidir} {envdir}/etc {envdir}/bin |
|
stestr run {posargs} |
|
|
|
[testenv:dsvm-fullstack] |
|
setenv = {[testenv]setenv} |
|
{[testenv:common]setenv} |
|
{[testenv:dsvm]setenv} |
|
# workaround for DB teardown lock contention (bug/1541742) |
|
OS_TEST_TIMEOUT={env:OS_TEST_TIMEOUT:600} |
|
OS_TEST_PATH=./neutron/tests/fullstack |
|
deps = |
|
{[testenv:functional]deps} |
|
commands = |
|
{toxinidir}/tools/generate_dhclient_script_for_fullstack.sh {envdir} |
|
{toxinidir}/tools/deploy_rootwrap.sh {toxinidir} {envdir}/etc {envdir}/bin |
|
stestr run --concurrency 4 {posargs} |
|
|
|
[testenv:releasenotes] |
|
envdir = {toxworkdir}/docs |
|
deps = -r{toxinidir}/doc/requirements.txt |
|
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html |
|
|
|
[testenv:pep8] |
|
envdir = {toxworkdir}/shared |
|
deps = |
|
{[testenv]deps} |
|
commands= |
|
# If it is easier to add a check via a shell script, consider adding it in this file |
|
sh ./tools/misc-sanity-checks.sh |
|
{toxinidir}/tools/check_unit_test_structure.sh |
|
# Checks for coding and style guidelines |
|
flake8 |
|
sh ./tools/coding-checks.sh --pylint '{posargs}' |
|
neutron-db-manage --config-file neutron/tests/etc/neutron.conf check_migration |
|
python ./tools/list_moved_globals.py |
|
{[testenv:genconfig]commands} |
|
{[testenv:bashate]commands} |
|
{[testenv:bandit]commands} |
|
{[testenv:genpolicy]commands} |
|
whitelist_externals = |
|
sh |
|
bash |
|
|
|
[testenv:cover] |
|
envdir = {toxworkdir}/shared |
|
setenv = |
|
{[testenv]setenv} |
|
PYTHON=coverage run --source neutron --parallel-mode |
|
commands = |
|
stestr run --no-subunit-trace {posargs} |
|
coverage combine |
|
coverage report --fail-under=82 --skip-covered |
|
coverage html -d cover |
|
coverage xml -o cover/coverage.xml |
|
|
|
[testenv:venv] |
|
commands = {posargs} |
|
|
|
[testenv:docs] |
|
envdir = {toxworkdir}/docs |
|
deps = -r{toxinidir}/doc/requirements.txt |
|
commands = sphinx-build -W -b html doc/source doc/build/html |
|
|
|
[testenv:pdf-docs] |
|
envdir = {toxworkdir}/docs |
|
deps = {[testenv:docs]deps} |
|
whitelist_externals = |
|
make |
|
commands = |
|
sphinx-build -W -b latex doc/source doc/build/pdf |
|
make -C doc/build/pdf |
|
|
|
[testenv:linkcheck] |
|
envdir = {toxworkdir}/docs |
|
deps = -r{toxinidir}/doc/requirements.txt |
|
commands = sphinx-build -W -b linkcheck doc/source doc/build/linkcheck |
|
|
|
[flake8] |
|
# E126 continuation line over-indented for hanging indent |
|
# E128 continuation line under-indented for visual indent |
|
# H405 multi line docstring summary not separated with an empty line |
|
# N530 direct neutron imports not allowed |
|
# TODO(amotoki) check the following new rules should be fixed or ignored |
|
# E731 do not assign a lambda expression, use a def |
|
# W504 line break after binary operator |
|
ignore = E126,E128,E731,H405,N530,W504 |
|
# H106: Don't put vim configuration in source files |
|
# H203: Use assertIs(Not)None to check for None |
|
# H204: Use assert(Not)Equal to check for equality |
|
# H205: Use assert(Greater|Less)(Equal) for comparison |
|
# H904: Delay string interpolations at logging calls |
|
enable-extensions=H106,H203,H204,H205,H904 |
|
show-source = true |
|
exclude = ./.*,build,dist,doc |
|
import-order-style = pep8 |
|
|
|
[hacking] |
|
import_exceptions = neutron._i18n |
|
local-check-factory = neutron.hacking.checks.factory |
|
|
|
[testenv:bandit] |
|
envdir = {toxworkdir}/shared |
|
# B104: Possible binding to all interfaces |
|
# B303: blacklist calls: md5, sha1 |
|
# B311: Standard pseudo-random generators are not suitable for security/cryptographic purpose |
|
# B604: any_other_function_with_shell_equals_true |
|
deps = -r{toxinidir}/test-requirements.txt |
|
commands = bandit -r neutron -x tests -n5 -s B104,B303,B311,B604 |
|
|
|
[testenv:bashate] |
|
envdir = {toxworkdir}/shared |
|
commands = bash -c "find {toxinidir} \ |
|
-not \( -type d -name .tox\* -prune \) \ |
|
-not \( -type d -name .venv\* -prune \) \ |
|
-type f \ |
|
-name \*.sh \ |
|
# E005 file does not begin with #! or have a .sh prefix |
|
# E006 check for lines longer than 79 columns |
|
# E042 local declaration hides errors |
|
# E043 Arithmetic compound has inconsistent return semantics |
|
-print0 | xargs -0 bashate -v -iE006 -eE005,E042,E043" |
|
|
|
[testenv:genconfig] |
|
envdir = {toxworkdir}/shared |
|
commands = {toxinidir}/tools/generate_config_file_samples.sh |
|
|
|
[testenv:genpolicy] |
|
envdir = {toxworkdir}/shared |
|
commands = oslopolicy-sample-generator --config-file=etc/oslo-policy-generator/policy.conf |
|
|
|
# This environment can be used to quickly validate that all needed system |
|
# packages required to successfully execute test targets are installed |
|
[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:lower-constraints] |
|
setenv = OS_TEST_TIMEOUT={env:OS_TEST_TIMEOUT:60} |
|
deps = |
|
-c{toxinidir}/lower-constraints.txt |
|
-r{toxinidir}/test-requirements.txt |
|
-r{toxinidir}/requirements.txt
|
|
|