211 lines
5.9 KiB
INI
Raw Normal View History

[tox]
minversion = 1.6
envlist = py35,py27,pep8
skipsdist = True
[testenv]
usedevelop = True
install_command =
pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} -U {opts} {packages}
whitelist_externals = bash
find
rm
setenv =
VIRTUAL_ENV={envdir}
PYTHONWARNINGS=default::DeprecationWarning
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
passenv = TEMPEST_* OS_TEST_*
commands =
find . -type f -name "*.py[c|o]" -delete
rm -f .testrepository/times.dbm
stestr run {posargs}
[testenv:debug]
basepython = python3
commands = oslo_debug_helper -t magnum/tests/unit {posargs}
[testenv:debug-py27]
basepython = python2.7
commands = oslo_debug_helper -t magnum/tests/unit {posargs}
[testenv:debug-py35]
basepython = python3.5
commands = oslo_debug_helper -t magnum/tests/unit {posargs}
[testenv:functional-api]
sitepackages = True
setenv = {[testenv]setenv}
OS_TEST_PATH=./magnum/tests/functional/api
OS_TEST_TIMEOUT=7200
deps =
{[testenv]deps}
commands =
find . -type f -name "*.py[c|o]" -delete
stestr run {posargs}
[testenv:functional-k8s]
sitepackages = True
setenv = {[testenv]setenv}
OS_TEST_PATH=./magnum/tests/functional/k8s
OS_TEST_TIMEOUT=7200
deps =
{[testenv]deps}
commands =
find . -type f -name "*.py[c|o]" -delete
stestr run {posargs}
[testenv:functional-k8s-ironic]
sitepackages = True
setenv = {[testenv]setenv}
OS_TEST_PATH=./magnum/tests/functional/k8s_ironic
OS_TEST_TIMEOUT=7200
deps =
{[testenv]deps}
commands =
find . -type f -name "*.py[c|o]" -delete
stestr run {posargs}
[testenv:functional-k8s-coreos]
sitepackages = True
setenv = {[testenv]setenv}
OS_TEST_PATH=./magnum/tests/functional/k8s_coreos
OS_TEST_TIMEOUT=7200
deps =
{[testenv]deps}
commands =
find . -type f -name "*.py[c|o]" -delete
stestr run {posargs}
[testenv:functional-swarm]
sitepackages = True
setenv = {[testenv]setenv}
OS_TEST_PATH=./magnum/tests/functional/swarm
OS_TEST_TIMEOUT=7200
deps =
{[testenv]deps}
commands =
find . -type f -name "*.py[c|o]" -delete
stestr run {posargs}
[testenv:functional-swarm-mode]
sitepackages = True
setenv = {[testenv]setenv}
OS_TEST_PATH=./magnum/tests/functional/swarm_mode
OS_TEST_TIMEOUT=7200
deps =
{[testenv]deps}
commands =
find . -type f -name "*.py[c|o]" -delete
stestr run {posargs}
[testenv:functional-mesos]
sitepackages = True
setenv = {[testenv]setenv}
OS_TEST_PATH=./magnum/tests/functional/mesos
OS_TEST_TIMEOUT=7200
deps =
{[testenv]deps}
commands =
find . -type f -name "*.py[c|o]" -delete
stestr run {posargs}
[testenv:pep8]
basepython = python3
commands =
doc8 -e .rst specs/ doc/source/ contrib/ CONTRIBUTING.rst HACKING.rst README.rst
bash tools/flake8wrap.sh {posargs}
bandit -r magnum -x tests -n5 -ll
bash -c "find {toxinidir} \
-not \( -type d -name .?\* -prune \) \
-not \( -type d -name doc -prune \) \
-not \( -type d -name contrib -prune \) \
-type f \
-name \*.sh \
-print0 | xargs -0 bashate -v -iE006,E010,E042 -eE005"
[testenv:venv]
basepython = python3
commands = {posargs}
[testenv:bandit]
basepython = python3
deps = -r{toxinidir}/test-requirements.txt
commands = bandit -r magnum -x tests -n5 -ll
[testenv:cover]
basepython = python3
commands = {toxinidir}/tools/cover.sh {posargs}
[testenv:docs]
basepython = python3
deps = -r{toxinidir}/doc/requirements.txt
commands = sphinx-build -W -b html doc/source doc/build/html
[testenv:genconfig]
basepython = python3
commands =
oslo-config-generator --config-file etc/magnum/magnum-config-generator.conf
[testenv:genpolicy]
basepython = python3
commands =
oslopolicy-sample-generator --config-file etc/magnum/magnum-policy-generator.conf
[flake8]
# H106 Dont put vim configuration in source files
# H203 Use assertIs(Not)None to check for None
# H904 Delay string interpolations at logging calls
filename = *.py,app.wsgi
enable-extensions = H106,H203,H904
exclude = .venv,.git,.tox,dist,*lib/python*,*egg,build,tools,releasenotes
Add missing dependencies (from pip-missing-reqs) Any explicit imports we have in magnum, we should specify the pypi package version number in our requirements. The pip-missing-reqs helps us find these. Note that python-dateutil is an optional import in the python-k8sclient AND it's not in the global requirements so not adding that. Here are the references to the imports for the packages we are adding here: alembic ------- magnum/db/sqlalchemy/alembic/env.py:15 dist=alembic module=alembic.context magnum/db/sqlalchemy/alembic/versions/1afee1db6cd0_add_master_flavor.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py:26 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/29affeaa2bc2_rename_bay_master_address.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2ace4006498_rename_bay_minions_address.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2b5f24dd95de_rename_service_port.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2d1354bbf76e_ssh_authorized_key.py:28 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2d8657c0cdc_add_bay_uuid.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/35cff7c86221_add_private_network_to_baymodel.py:26 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/3a938526b35d_add_docker_volume_size.py:28 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/3b6c4c42adb4_add_unique_constraints.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/3bea56f25597_multi_tenant.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/456126c6c9e9_create_baylock_table.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/4956f03cabad_add_cluster_distro.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/4ea34a59a64c_add_discovery_url_to_bay.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/5793cd26898d_add_bay_status.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/592131657ca1_add_coe_column_to_baymodel.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/59e7664a8ba1_add_container_status.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/e772b2598d9_add_container_command.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/migration.py:19 dist=alembic module=alembic magnum/db/sqlalchemy/migration.py:20 dist=alembic module=alembic.config magnum/db/sqlalchemy/migration.py:21 dist=alembic module=alembic.migration eventlet -------- magnum/common/rpc_service.py:17 dist=eventlet module=eventlet magnum/openstack/common/eventlet_backdoor.py:29 dist=eventlet module=eventlet.backdoor magnum/openstack/common/loopingcall.py:22 dist=eventlet module=eventlet.event magnum/openstack/common/loopingcall.py:23 dist=eventlet module=eventlet.greenthread magnum/openstack/common/service.py:36 dist=eventlet module=eventlet magnum/openstack/common/service.py:37 dist=eventlet module=eventlet.event magnum/openstack/common/threadgroup.py:17 dist=eventlet module=eventlet magnum/openstack/common/threadgroup.py:18 dist=eventlet module=eventlet.greenpool iso8601 ------- magnum/objects/utils.py:20 dist=iso---- module=iso8601 stevedore --------- magnum/db/migration.py:20 dist=stevedore module=stevedore.driver webob ----- magnum/api/middleware/parsable_error.py:24 dist=webob module=webob greenlet -------- magnum/openstack/common/eventlet_backdoor.py:30 dist=greenlet module=greenlet prettytable ----------- magnum/openstack/common/cliutils.py:29 dist=prettytable module=prettytable pyyaml ------ magnum/common/yamlutils.py:13 dist=pyyaml module=yaml We explicitly don't add setuptools in this review as none of the openstack projects add setuptools, please see notes here: http://git.openstack.org/cgit/openstack/requirements/tree/global-requirements.txt#n259 Closes-Bug: #1455695 Change-Id: Ia3f69801b230db1165ed21556a139b775c81d027
2015-05-15 20:10:49 -04:00
[hacking]
local-check-factory = magnum.hacking.checks.factory
[testenv:pip-check-reqs]
basepython = python3
Add missing dependencies (from pip-missing-reqs) Any explicit imports we have in magnum, we should specify the pypi package version number in our requirements. The pip-missing-reqs helps us find these. Note that python-dateutil is an optional import in the python-k8sclient AND it's not in the global requirements so not adding that. Here are the references to the imports for the packages we are adding here: alembic ------- magnum/db/sqlalchemy/alembic/env.py:15 dist=alembic module=alembic.context magnum/db/sqlalchemy/alembic/versions/1afee1db6cd0_add_master_flavor.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py:26 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/29affeaa2bc2_rename_bay_master_address.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2ace4006498_rename_bay_minions_address.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2b5f24dd95de_rename_service_port.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2d1354bbf76e_ssh_authorized_key.py:28 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2d8657c0cdc_add_bay_uuid.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/35cff7c86221_add_private_network_to_baymodel.py:26 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/3a938526b35d_add_docker_volume_size.py:28 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/3b6c4c42adb4_add_unique_constraints.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/3bea56f25597_multi_tenant.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/456126c6c9e9_create_baylock_table.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/4956f03cabad_add_cluster_distro.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/4ea34a59a64c_add_discovery_url_to_bay.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/5793cd26898d_add_bay_status.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/592131657ca1_add_coe_column_to_baymodel.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/59e7664a8ba1_add_container_status.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/e772b2598d9_add_container_command.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/migration.py:19 dist=alembic module=alembic magnum/db/sqlalchemy/migration.py:20 dist=alembic module=alembic.config magnum/db/sqlalchemy/migration.py:21 dist=alembic module=alembic.migration eventlet -------- magnum/common/rpc_service.py:17 dist=eventlet module=eventlet magnum/openstack/common/eventlet_backdoor.py:29 dist=eventlet module=eventlet.backdoor magnum/openstack/common/loopingcall.py:22 dist=eventlet module=eventlet.event magnum/openstack/common/loopingcall.py:23 dist=eventlet module=eventlet.greenthread magnum/openstack/common/service.py:36 dist=eventlet module=eventlet magnum/openstack/common/service.py:37 dist=eventlet module=eventlet.event magnum/openstack/common/threadgroup.py:17 dist=eventlet module=eventlet magnum/openstack/common/threadgroup.py:18 dist=eventlet module=eventlet.greenpool iso8601 ------- magnum/objects/utils.py:20 dist=iso---- module=iso8601 stevedore --------- magnum/db/migration.py:20 dist=stevedore module=stevedore.driver webob ----- magnum/api/middleware/parsable_error.py:24 dist=webob module=webob greenlet -------- magnum/openstack/common/eventlet_backdoor.py:30 dist=greenlet module=greenlet prettytable ----------- magnum/openstack/common/cliutils.py:29 dist=prettytable module=prettytable pyyaml ------ magnum/common/yamlutils.py:13 dist=pyyaml module=yaml We explicitly don't add setuptools in this review as none of the openstack projects add setuptools, please see notes here: http://git.openstack.org/cgit/openstack/requirements/tree/global-requirements.txt#n259 Closes-Bug: #1455695 Change-Id: Ia3f69801b230db1165ed21556a139b775c81d027
2015-05-15 20:10:49 -04:00
# do not install test-requirements as that will pollute the virtualenv for
# determining missing packages
# this also means that pip_check_reqs must be installed separately, outside
Add missing dependencies (from pip-missing-reqs) Any explicit imports we have in magnum, we should specify the pypi package version number in our requirements. The pip-missing-reqs helps us find these. Note that python-dateutil is an optional import in the python-k8sclient AND it's not in the global requirements so not adding that. Here are the references to the imports for the packages we are adding here: alembic ------- magnum/db/sqlalchemy/alembic/env.py:15 dist=alembic module=alembic.context magnum/db/sqlalchemy/alembic/versions/1afee1db6cd0_add_master_flavor.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py:26 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/29affeaa2bc2_rename_bay_master_address.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2ace4006498_rename_bay_minions_address.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2b5f24dd95de_rename_service_port.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2d1354bbf76e_ssh_authorized_key.py:28 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2d8657c0cdc_add_bay_uuid.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/35cff7c86221_add_private_network_to_baymodel.py:26 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/3a938526b35d_add_docker_volume_size.py:28 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/3b6c4c42adb4_add_unique_constraints.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/3bea56f25597_multi_tenant.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/456126c6c9e9_create_baylock_table.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/4956f03cabad_add_cluster_distro.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/4ea34a59a64c_add_discovery_url_to_bay.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/5793cd26898d_add_bay_status.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/592131657ca1_add_coe_column_to_baymodel.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/59e7664a8ba1_add_container_status.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/e772b2598d9_add_container_command.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/migration.py:19 dist=alembic module=alembic magnum/db/sqlalchemy/migration.py:20 dist=alembic module=alembic.config magnum/db/sqlalchemy/migration.py:21 dist=alembic module=alembic.migration eventlet -------- magnum/common/rpc_service.py:17 dist=eventlet module=eventlet magnum/openstack/common/eventlet_backdoor.py:29 dist=eventlet module=eventlet.backdoor magnum/openstack/common/loopingcall.py:22 dist=eventlet module=eventlet.event magnum/openstack/common/loopingcall.py:23 dist=eventlet module=eventlet.greenthread magnum/openstack/common/service.py:36 dist=eventlet module=eventlet magnum/openstack/common/service.py:37 dist=eventlet module=eventlet.event magnum/openstack/common/threadgroup.py:17 dist=eventlet module=eventlet magnum/openstack/common/threadgroup.py:18 dist=eventlet module=eventlet.greenpool iso8601 ------- magnum/objects/utils.py:20 dist=iso---- module=iso8601 stevedore --------- magnum/db/migration.py:20 dist=stevedore module=stevedore.driver webob ----- magnum/api/middleware/parsable_error.py:24 dist=webob module=webob greenlet -------- magnum/openstack/common/eventlet_backdoor.py:30 dist=greenlet module=greenlet prettytable ----------- magnum/openstack/common/cliutils.py:29 dist=prettytable module=prettytable pyyaml ------ magnum/common/yamlutils.py:13 dist=pyyaml module=yaml We explicitly don't add setuptools in this review as none of the openstack projects add setuptools, please see notes here: http://git.openstack.org/cgit/openstack/requirements/tree/global-requirements.txt#n259 Closes-Bug: #1455695 Change-Id: Ia3f69801b230db1165ed21556a139b775c81d027
2015-05-15 20:10:49 -04:00
# of the requirements.txt files
deps = pip_check_reqs
Add missing dependencies (from pip-missing-reqs) Any explicit imports we have in magnum, we should specify the pypi package version number in our requirements. The pip-missing-reqs helps us find these. Note that python-dateutil is an optional import in the python-k8sclient AND it's not in the global requirements so not adding that. Here are the references to the imports for the packages we are adding here: alembic ------- magnum/db/sqlalchemy/alembic/env.py:15 dist=alembic module=alembic.context magnum/db/sqlalchemy/alembic/versions/1afee1db6cd0_add_master_flavor.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py:26 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/29affeaa2bc2_rename_bay_master_address.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2ace4006498_rename_bay_minions_address.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2b5f24dd95de_rename_service_port.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2d1354bbf76e_ssh_authorized_key.py:28 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/2d8657c0cdc_add_bay_uuid.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/35cff7c86221_add_private_network_to_baymodel.py:26 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/3a938526b35d_add_docker_volume_size.py:28 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/3b6c4c42adb4_add_unique_constraints.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/3bea56f25597_multi_tenant.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/456126c6c9e9_create_baylock_table.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/4956f03cabad_add_cluster_distro.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/4ea34a59a64c_add_discovery_url_to_bay.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/5793cd26898d_add_bay_status.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/592131657ca1_add_coe_column_to_baymodel.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/59e7664a8ba1_add_container_status.py:25 dist=alembic module=alembic.op magnum/db/sqlalchemy/alembic/versions/e772b2598d9_add_container_command.py:24 dist=alembic module=alembic.op magnum/db/sqlalchemy/migration.py:19 dist=alembic module=alembic magnum/db/sqlalchemy/migration.py:20 dist=alembic module=alembic.config magnum/db/sqlalchemy/migration.py:21 dist=alembic module=alembic.migration eventlet -------- magnum/common/rpc_service.py:17 dist=eventlet module=eventlet magnum/openstack/common/eventlet_backdoor.py:29 dist=eventlet module=eventlet.backdoor magnum/openstack/common/loopingcall.py:22 dist=eventlet module=eventlet.event magnum/openstack/common/loopingcall.py:23 dist=eventlet module=eventlet.greenthread magnum/openstack/common/service.py:36 dist=eventlet module=eventlet magnum/openstack/common/service.py:37 dist=eventlet module=eventlet.event magnum/openstack/common/threadgroup.py:17 dist=eventlet module=eventlet magnum/openstack/common/threadgroup.py:18 dist=eventlet module=eventlet.greenpool iso8601 ------- magnum/objects/utils.py:20 dist=iso---- module=iso8601 stevedore --------- magnum/db/migration.py:20 dist=stevedore module=stevedore.driver webob ----- magnum/api/middleware/parsable_error.py:24 dist=webob module=webob greenlet -------- magnum/openstack/common/eventlet_backdoor.py:30 dist=greenlet module=greenlet prettytable ----------- magnum/openstack/common/cliutils.py:29 dist=prettytable module=prettytable pyyaml ------ magnum/common/yamlutils.py:13 dist=pyyaml module=yaml We explicitly don't add setuptools in this review as none of the openstack projects add setuptools, please see notes here: http://git.openstack.org/cgit/openstack/requirements/tree/global-requirements.txt#n259 Closes-Bug: #1455695 Change-Id: Ia3f69801b230db1165ed21556a139b775c81d027
2015-05-15 20:10:49 -04:00
-rrequirements.txt
commands=pip-missing-reqs -d --ignore-file=magnum/tests/* magnum
[testenv:releasenotes]
basepython = python3
deps = -r{toxinidir}/doc/requirements.txt
commands =
rm -rf releasenotes/build
sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[testenv:install-guide]
basepython = python3
commands = sphinx-build -a -E -W -d install-guide/build/doctrees -b html install-guide/source install-guide/build/html
[testenv:api-ref]
basepython = python3
deps = -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:lower-constraints]
basepython = python3
deps =
-c{toxinidir}/lower-constraints.txt
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt
# This environment can be used to quickly validate that all needed system
# packages required to successfully execute test targets are installed
[testenv:bindep]
basepython = python3
# 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