cinder/tox.ini
Andreas Jaeger a144fa3474 Re-enable local hacking checks
With the switch to hacking 2.0, the local checks are not enabled
anymore, update repo to use the new way of registering local checks.

Remove local vi check since hacking has this now as H106.

Change-Id: I4d03f4c7eff959017e907cac974c394af0559643
2020-03-29 12:11:18 +02:00

231 lines
6.7 KiB
INI

[tox]
minversion = 3.1.0
skipsdist = True
skip_missing_interpreters = true
# python runtimes: https://governance.openstack.org/tc/reference/runtimes/ussuri.html
envlist = py37,py36,compliance,pep8
# this allows tox to infer the base python from the environment name
# and override any basepython configured in this file
ignore_basepython_conflict=true
[testenv]
basepython = python3
setenv = VIRTUAL_ENV={envdir}
PYTHONWARNINGS=default::DeprecationWarning
OS_STDOUT_CAPTURE=1
OS_STDERR_CAPTURE=1
OS_TEST_TIMEOUT=60
OS_TEST_PATH=./cinder/tests/unit
usedevelop = True
install_command = pip install {opts} {packages}
deps = -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt
# By default stestr will set concurrency
# to ncpu, to specify something else use
# the concurrency=<n> option.
# call ie: 'tox -epy27 -- --concurrency=4'
commands =
find . -ignore_readdir_race -type f -name "*.pyc" -delete
stestr run {posargs}
stestr slowest
whitelist_externals =
bash
find
passenv = *_proxy *_PROXY
[testenv:api-ref]
whitelist_externals = rm
deps = {[testenv:docs]deps}
commands =
rm -rf api-ref/build
sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html/
[testenv:releasenotes]
deps = {[testenv:docs]deps}
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[testenv:functional]
setenv =
OS_TEST_PATH = ./cinder/tests/functional
[testenv:functional-py36]
setenv =
{[testenv:functional]setenv}
[testenv:functional-py37]
setenv =
{[testenv:functional]setenv}
[testenv:api-samples]
envdir = {toxworkdir}/shared
setenv =
GENERATE_SAMPLES=True
PYTHONHASHSEED=0
commands =
find . -ignore_readdir_race -type f -name "*.pyc" -delete
stestr --test-path=./cinder/tests/functional/api_sample_tests run {posargs}
stestr slowest
[testenv:compliance]
setenv =
OS_TEST_PATH = ./cinder/tests/compliance
[testenv:pep8]
commands =
flake8 {posargs} .
doc8
{toxinidir}/tools/config/check_uptodate.sh
{toxinidir}/tools/check_exec.py {toxinidir}/cinder {toxinidir}/doc/source/ {toxinidir}/releasenotes/notes
[testenv:fast8]
# Use same environment directory as pep8 env to save space and install time
envdir = {toxworkdir}/pep8
commands =
{toxinidir}/tools/fast8.sh
passenv = FAST8_NUM_COMMITS
[testenv:pylint]
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
pylint==2.3.0
commands =
bash ./tools/coding-checks.sh --pylint {posargs}
[testenv:cover]
# Also do not run test_coverage_ext tests while gathering coverage as those
# tests conflict with coverage.
setenv =
{[testenv]setenv}
PYTHON=coverage run --source cinder --parallel-mode
commands =
stestr run {posargs}
coverage combine
coverage html -d cover
coverage xml -o cover/coverage.xml
[testenv:genconfig]
sitepackages = False
envdir = {toxworkdir}/pep8
commands = oslo-config-generator --config-file=tools/config/cinder-config-generator.conf
[testenv:genpolicy]
commands = oslopolicy-sample-generator --config-file=tools/config/cinder-policy-generator.conf
[testenv:genopts]
sitepackages = False
envdir = {toxworkdir}/pep8
commands = python tools/config/generate_cinder_opts.py
[testenv:venv]
commands = {posargs}
[testenv:docs]
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/requirements.txt
-r{toxinidir}/doc/requirements.txt
commands =
rm -fr doc/source/contributor/api/
rm -fr doc/build/html doc/build/doctrees
sphinx-build -W -b html -d doc/build/doctrees doc/source doc/build/html
whitelist_externals = rm
[testenv:pdf-docs]
deps = {[testenv:docs]deps}
commands =
rm -fr doc/source/contributor/api/
rm -fr doc/build/pdf
sphinx-build -W -b latex doc/source doc/build/pdf
make -C doc/build/pdf
whitelist_externals =
make
rm
[testenv:gendriverlist]
sitepackages = False
envdir = {toxworkdir}/venv
commands = python {toxinidir}/tools/generate_driver_list.py
[testenv:bandit]
deps = -r{toxinidir}/test-requirements.txt
commands = bandit -r cinder -n5 -x cinder/tests/* -ll
[testenv:bandit-baseline]
envdir = {toxworkdir}/bandit
commands = bandit-baseline -r cinder -n5 -x cinder/tests/* -ii -ll
[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, and develop mode disabled
# explicitly to avoid unnecessarily installing the checked-out repo too (this
# further relies on "tox.skipsdist = True" above).
deps = bindep
commands = bindep {posargs}
usedevelop = False
[flake8]
# Following checks are ignored on purpose.
#
# E251 unexpected spaces around keyword / parameter equals
# reason: no improvement in readability
#
# E402 module level import not at top of file
# reason: there are numerous places where we import modules
# later for legitimate reasons
#
# W503 line break before binary operator
# reason: pep8 itself is not sure about this one and
# reversed this rule in 2016
# W504 line break after binary operator
# reason: no agreement on this being universally
# preferable for our code. Disabled to keep checking
# tools from getting in our way with regards to this.
# H101 include name with TODO
# reason: no real benefit
# G200 Logging statements should not include the exception
# reason: Many existing cases of this that may be legitimate
ignore = E251,E402,W503,W504,H101,G200
# H904 Delay string interpolations at logging calls.
enable-extensions = H106,H203,H904
exclude = .git,.venv,.tox,dist,tools,doc/ext,*egg,build
max-complexity = 30
application-import-names = cinder
import-order-style = pep8
[hacking]
import_exceptions = cinder.i18n
[flake8:local-plugins]
extension =
C312 = checks:no_translate_logs
N322 = checks:no_mutable_default_args
N323 = checks:check_explicit_underscore_import
C310 = checks:CheckLoggingFormatArgs
C311 = checks:CheckOptRegistrationArgs
C301 = checks:check_datetime_now
C306 = checks:check_timeutils_strtime
C308 = checks:check_timeutils_isotime
C302 = checks:check_unicode_usage
C303 = checks:check_no_print_statements
C336 = checks:dict_constructor_with_list_copy
C309 = checks:no_test_log
C313 = checks:validate_assertTrue
paths = ./cinder/tests/hacking
[doc8]
ignore-path=.tox,*.egg-info,doc/src/api,doc/source/drivers.rst,doc/build,.eggs/*/EGG-INFO/*.txt,doc/source/configuration/tables,./*.txt
extension=.txt,.rst,.inc
[testenv:lower-constraints]
deps =
-c{toxinidir}/lower-constraints.txt
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt