[tox] minversion = 3.18.0 envlist = py3,functional,pep8 [testenv] usedevelop = True setenv = VIRTUAL_ENV={envdir} PYTHONDONTWRITEBYTECODE = 1 OS_TEST_PATH=./ironic_python_agent/tests/unit OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true} LANGUAGE=en_US LC_ALL=en_US.utf-8 deps = -c{env:TOX_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:codespell] description = Run codespell to check spelling deps = codespell # note(JayF): {posargs} lets us run `tox -ecodespell -- -w` to get codespell # to correct spelling issues in our code it's aware of. commands = codespell {posargs} [testenv:functional] # 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] deps = hacking~=6.1.0 # Apache-2.0 bashate~=2.1.0 # Apache-2.0 flake8-import-order~=0.18.0 # LGPLv3 pycodestyle>=2.0.0,<3.0.0 # MIT doc8~=1.1.0 # Apache-2.0 allowlist_externals = bash {toxinidir}/tools/run_bashate.sh 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 # NOTE(dtantsur): documentation building process requires importing IPA deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} -r{toxinidir}/requirements.txt -r{toxinidir}/doc/requirements.txt commands = sphinx-build -b html doc/source doc/build/html [testenv:pdf-docs] allowlist_externals = make setenv = PYTHONHASHSEED=0 sitepackages = False deps = {[testenv:docs]deps} commands = sphinx-build -b latex doc/source doc/build/pdf make -C doc/build/pdf [testenv:releasenotes] deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} -r{toxinidir}/doc/requirements.txt 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 allowlist_externals = mkdir commands = mkdir -p etc/ironic_python_agent oslo-config-generator --config-file=tools/config/ipa-config-generator.conf [testenv:bandit] deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} -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'