59fc114d30
Since we dropped support for python 2 [1], we no longer need to use the mock library, which existed to backport py3 functionality into py2. Which must be done by saying:: from unittest import mock ...because if you say:: import mock ...you definitely will not be getting the standard library mock. That will always import the third party mock library. This commit adds hacking check N366 to enforce the former. This check can be removed in the future (and we can start saying ``import mock`` again) if we manage to purge these transitive dependencies. I'm not holding my breath. [1]https://review.opendev.org/#/c/688593/ Change-Id: I79b0a084b8a99c54ce175a520e039e5572c5165a
134 lines
3.8 KiB
INI
134 lines
3.8 KiB
INI
[tox]
|
|
minversion = 3.1.1
|
|
envlist = py36,py37,pep8
|
|
skipsdist = True
|
|
# Automatic envs (pyXX) will only use the python version appropriate to that
|
|
# env and ignore basepython inherited from [testenv] if we set
|
|
# ignore_basepython_conflict.
|
|
ignore_basepython_conflict = True
|
|
|
|
[testenv]
|
|
basepython = python3
|
|
usedevelop = True
|
|
whitelist_externals =
|
|
rm
|
|
make
|
|
install_command = {[testenv:common-constraints]install_command}
|
|
setenv =
|
|
VIRTUAL_ENV={envdir}
|
|
OS_TEST_PATH=cyborg/tests/unit
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
|
|
commands = rm -f .testrepository/times.dbm
|
|
stestr run --slowest {posargs}
|
|
|
|
[testenv:common-constraints]
|
|
install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} {opts} {packages}
|
|
|
|
[testenv:genpolicy]
|
|
sitepackages = False
|
|
envdir = {toxworkdir}/venv
|
|
commands =
|
|
oslopolicy-sample-generator --config-file=tools/config/cyborg-policy-generator.conf
|
|
|
|
[testenv:genconfig]
|
|
sitepackages = False
|
|
envdir = {toxworkdir}/venv
|
|
commands =
|
|
oslo-config-generator --config-file=tools/config/cyborg-config-generator.conf
|
|
|
|
[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 test
|
|
usedevelop = False
|
|
|
|
|
|
[testenv:pep8]
|
|
commands =
|
|
flake8
|
|
doc8 doc/source/ CONTRIBUTING.rst HACKING.rst README.rst
|
|
|
|
[testenv:pep8-constraints]
|
|
install_command = {[testenv:common-constraints]install_command}
|
|
commands = flake8 {posargs}
|
|
|
|
[testenv:venv]
|
|
commands = {posargs}
|
|
|
|
[testenv:cover]
|
|
setenv =
|
|
PYTHON=coverage run --source cyborg --parallel-mode
|
|
commands =
|
|
stestr run {posargs}
|
|
coverage combine
|
|
coverage html -d cover
|
|
coverage xml -o cover/coverage.xml
|
|
coverage report
|
|
|
|
[doc8]
|
|
ignore-path = .venv,.git,.tox,*cyborg/locale*,*lib/python*,*cyborg.egg*,api-ref/build,doc/build,doc/source/contributor/api
|
|
|
|
|
|
[testenv:docs]
|
|
deps = -r{toxinidir}/doc/requirements.txt
|
|
commands =
|
|
rm -rf doc/build/html
|
|
sphinx-build -W -b html doc/source doc/build/html
|
|
|
|
[testenv:pdf-docs]
|
|
envdir = {toxworkdir}/docs
|
|
deps = {[testenv:docs]deps}
|
|
commands =
|
|
rm -rf doc/build/pdf
|
|
sphinx-build -W -b latex doc/source doc/build/pdf
|
|
make -C doc/build/pdf
|
|
|
|
[testenv:releasenotes]
|
|
deps = -r{toxinidir}/doc/requirements.txt
|
|
commands = sphinx-build -a -W -E -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
|
|
|
[testenv:debug]
|
|
commands = oslo_debug_helper -t cyborg/tests {posargs}
|
|
|
|
[testenv:api-ref]
|
|
# This environment is called from CI scripts to test and publish
|
|
# the API Ref to docs.openstack.org.
|
|
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
|
|
whitelist_externals = rm
|
|
|
|
[flake8]
|
|
filename = *.py,app.wsgi
|
|
show-source = True
|
|
ignore = E123,E125,H405,W503,W504
|
|
builtins = _
|
|
enable-extensions = H106,H203,H904
|
|
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,*sqlalchemy/alembic/versions/*,demo/,releasenotes
|
|
|
|
[testenv:bandit]
|
|
commands = bandit -r cyborg -x cyborg/tests/* -n 5 -ll
|
|
|
|
[flake8:local-plugins]
|
|
extension =
|
|
M302 = checks:assert_equal_not_none
|
|
M310 = checks:use_timeutils_utcnow
|
|
M316 = checks:assert_true_isinstance
|
|
M322 = checks:no_mutable_default_args
|
|
M336 = checks:dict_constructor_with_list_copy
|
|
M338 = checks:assert_equal_in
|
|
M339 = checks:no_xrange
|
|
M340 = checks:check_explicit_underscore_import
|
|
M352 = checks:no_log_warn
|
|
N366 = checks:import_stock_mock
|
|
paths = ./cyborg/hacking
|