ironic-python-agent/tox.ini
Dmitry Tantsur 7fb098aa0b Import example hardware managers from ipa-example-hardware-managers
They're not easily discoverable there, let's keep them in tree.

The examples have been restructured to have two different projects
ready to be copied and adjusted. PEP8 failures have been fixed.

Change-Id: I2af04f4b7f9a2109fe83ec517e716159331a48bb
Co-Authored-By: Jay Faulkner <jay@jvf.cc>
2020-07-31 13:35:34 +02:00

131 lines
3.8 KiB
INI

[tox]
minversion = 3.2.1
skipsdist = True
envlist = py3,functional,pep8
ignore_basepython_conflict=true
[testenv]
usedevelop = True
basepython = python3
setenv =
VIRTUAL_ENV={envdir}
PYTHONDONTWRITEBYTECODE = 1
OS_TEST_PATH=./ironic_python_agent/tests/unit
LANGUAGE=en_US
LC_ALL=en_US.utf-8
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands = stestr run {posargs}
passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY
[testenv:functional]
usedevelop = True
# Define virtualenv directory, port to use for functional testing, and number
# of seconds to wait for the agent to come alive during functional testing.
setenv =
VIRTUAL_ENV={envdir}
PYTHONDONTWRITEBYTECODE = 1
OS_TEST_PATH=./ironic_python_agent/tests/functional
TEST_PORT=9999
IPA_WAIT_TRIES=100
commands = stestr run {posargs}
[testenv:pep8]
whitelist_externals = bash
commands =
flake8 {posargs:ironic_python_agent examples}
# Run bashate during pep8 runs to ensure violations are caught by
# the check and gate queues.
{toxinidir}/tools/run_bashate.sh {toxinidir}
doc8 doc/source README.rst examples/README.rst
[testenv:cover]
setenv = VIRTUAL_ENV={envdir}
PYTHON=coverage run --source ironic_python_agent --omit='*tests*' --parallel-mode
commands =
coverage erase
stestr run {posargs}
coverage combine
coverage report --omit='*tests*'
coverage html -d ./cover --omit='*tests*'
[testenv:venv]
setenv = PYTHONHASHSEED=0
commands = {posargs:}
[testenv:debug]
envdir = {toxworkdir}/venv
commands = oslo_debug_helper -t ironic_python_agent/tests/unit {posargs}
[testenv:docs]
setenv = PYTHONHASHSEED=0
sitepackages = False
deps =
-r{toxinidir}/doc/requirements.txt
commands =
sphinx-build -b html doc/source doc/build/html
[testenv:pdf-docs]
whitelist_externals = make
setenv = PYTHONHASHSEED=0
sitepackages = False
deps =
-r{toxinidir}/doc/requirements.txt
commands =
sphinx-build -b latex doc/source doc/build/pdf
make -C doc/build/pdf
[testenv:releasenotes]
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[flake8]
# [E129] visually indented line with same indent as next logical line.
# [W503] Line break before binary operator.
ignore = E129,W503
exclude = .venv,.git,.tox,dist,doc,*lib/python*,*egg,build,tools,imagebuild/tinyipa/tinyipafinal,imagebuild/tinyipa/tinyipabuild
import-order-style = pep8
application-import-names = ironic_python_agent
# [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.
# [H210] Require 'autospec', 'spec', or 'spec_set' in mock.patch/mock.patch.object calls
# [H904] Delay string interpolations at logging calls.
enable-extensions=H106,H203,H204,H205,H210,H904
[hacking]
import_exceptions = ironic.openstack.common.gettextutils._,testtools.matchers
[testenv:checkconfig]
sitepackages = False
envdir = {toxworkdir}/venv
commands =
{toxinidir}/tools/config/check_uptodate.sh
[testenv:genconfig]
sitepackages = False
envdir = {toxworkdir}/venv
whitelist_externals = mkdir
commands =
mkdir -p etc/ironic_python_agent
oslo-config-generator --config-file=tools/config/ipa-config-generator.conf
[testenv:lower-constraints]
deps =
-c{toxinidir}/lower-constraints.txt
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt
[testenv:bandit]
deps = -r{toxinidir}/test-requirements.txt
commands = bandit -r ironic_python_agent -x tests -n5 -ll -c tools/bandit.yml
[testenv:examples]
commands =
pip install -e {toxinidir}/examples/business-logic
pip install -e {toxinidir}/examples/vendor-device
python -c 'import example_business_logic; import example_device'