cinder/tox.ini
Tony Breeds f12fda8ffb Make sure we install cinder requirements during the correct tox phase
When runnign tests under tox the virtualenv is created in a number of
phases (in brush strokes)
0. virtualenv -p $python .tox/$dir
1. pip install $deps
2. pip install .

Step 2 is run without any deps as they're all supposed to be installed
in phase 2

We have constraints in 'deps' we need to install all of cinders
requirements during phase 2.  If we don't then we get unconstrained
versions being installed during phase 2.

This shows up in a py27 run[1] as the absence of taskflow, and then in
[2] with new dependancies being installed

[1] http://logs.openstack.org/34/647934/3/check/openstack-tox-py27/93180f1/tox/py27-1.log
[2] http://logs.openstack.org/34/647934/3/check/openstack-tox-py27/93180f1/tox/py27-2.log

Change-Id: I5b1c285680f7c3256a707ea5973573f1176d4a26
2019-05-08 16:03:15 -04:00

201 lines
5.7 KiB
INI

[tox]
minversion = 2.5
skipsdist = True
skip_missing_interpreters = true
envlist = py36,py27,compliance,pep8
[testenv]
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://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-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]
basepython = python3
whitelist_externals = rm
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/doc/requirements.txt
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]
basepython = python3
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/doc/requirements.txt
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: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]
basepython = python3
setenv =
OS_TEST_PATH = ./cinder/tests/compliance
[testenv:pep8]
basepython = python3
commands =
flake8 {posargs} .
{toxinidir}/tools/config/check_uptodate.sh
{toxinidir}/tools/check_exec.py {toxinidir}/cinder {toxinidir}/doc/source/ {toxinidir}/releasenotes/notes
[testenv:fast8]
basepython = python3
# 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]
basepython = python3
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
pylint==2.1.1
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.
basepython = python3
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]
basepython = python3
sitepackages = False
envdir = {toxworkdir}/pep8
commands = oslo-config-generator --config-file=tools/config/cinder-config-generator.conf
[testenv:genpolicy]
basepython = python3
commands = oslopolicy-sample-generator --config-file=tools/config/cinder-policy-generator.conf
[testenv:genopts]
basepython = python3
sitepackages = False
envdir = {toxworkdir}/pep8
commands = python tools/config/generate_cinder_opts.py
[testenv:venv]
basepython = python3
commands = {posargs}
[testenv:docs]
basepython = python3
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/doc/requirements.txt
commands =
doc8
rm -fr doc/build doc/source/contributor/api/ .autogenerated
sphinx-build -W -b html doc/source doc/build/html
rm -rf api-ref/build
sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html/
whitelist_externals = rm
[testenv:gendriverlist]
basepython = python3
sitepackages = False
envdir = {toxworkdir}/venv
commands = python {toxinidir}/tools/generate_driver_list.py
[testenv:bandit]
basepython = python3
deps = -r{toxinidir}/test-requirements.txt
commands = bandit -r cinder -n5 -x tests -ll
[testenv:bandit-baseline]
basepython = python3
envdir = {toxworkdir}/bandit
commands = bandit-baseline -r cinder -n5 -x 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).
basepython = python3
deps = bindep
commands = bindep test
usedevelop = False
[flake8]
# Following checks are ignored on purpose.
#
# E251 unexpected spaces around keyword / parameter equals
# reason: no improvement in readability
ignore = E251
# 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
[hacking]
local-check-factory = cinder.hacking.checks.factory
import_exceptions = cinder.i18n
[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]
basepython = python3
deps =
-c{toxinidir}/lower-constraints.txt
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt