568921ce5b
We are running functional tests in zuul without a 'pyNN' factor (e.g. 'tox -e functional'). For this to work, we need to allow an empty factor, i.e. we want: [testenv:functional{,-py310}] rather than: [testenv:functional{-py310}] (note the missing comma) Unfortunately we missed this as tox 4 has a currently unaddressed regression [1] that results in it running the base testenv in the case there is only a partial factor match. That needs to be fixed for avoid this biting us again the future, but we can at least fix it for now. [1] https://github.com/tox-dev/tox/issues/3219 Change-Id: Ib9f65a4523222f1224d51534c5061f90501b59d3 Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
167 lines
5.3 KiB
INI
167 lines
5.3 KiB
INI
[tox]
|
|
minversion = 4.3.0
|
|
envlist = pep8,py3
|
|
|
|
[testenv]
|
|
description =
|
|
Run unit tests.
|
|
passenv =
|
|
OS_*
|
|
OPENSTACKSDK_*
|
|
setenv =
|
|
LANG=en_US.UTF-8
|
|
LANGUAGE=en_US:en
|
|
LC_ALL=C
|
|
OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true}
|
|
OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:true}
|
|
OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:true}
|
|
deps =
|
|
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/test-requirements.txt
|
|
-r{toxinidir}/requirements.txt
|
|
commands =
|
|
stestr run {posargs}
|
|
stestr slowest
|
|
|
|
[testenv:functional{,-py37,-py38,-py39,-py310,-py311,-py312}]
|
|
description =
|
|
Run functional tests.
|
|
# Some jobs (especially heat) takes longer, therefore increase default timeout
|
|
# This timeout should not be smaller, than the longest individual timeout
|
|
setenv =
|
|
{[testenv]setenv}
|
|
OS_TEST_TIMEOUT=600
|
|
OPENSTACKSDK_FUNC_TEST_TIMEOUT_LOAD_BALANCER=600
|
|
OPENSTACKSDK_EXAMPLE_CONFIG_KEY=functional
|
|
OPENSTACKSDK_FUNC_TEST_TIMEOUT_PROJECT_CLEANUP=1200
|
|
commands =
|
|
stestr --test-path ./openstack/tests/functional/{env:OPENSTACKSDK_TESTS_SUBDIR:} run --serial {posargs}
|
|
stestr slowest
|
|
|
|
# Acceptance tests are the ones running on real clouds
|
|
[testenv:acceptance-regular-user]
|
|
description =
|
|
Run acceptance tests.
|
|
# This env intends to test functions of a regular user without admin privileges
|
|
# Some jobs (especially heat) takes longer, therefore increase default timeout
|
|
# This timeout should not be smaller, than the longest individual timeout
|
|
setenv =
|
|
{[testenv]setenv}
|
|
OS_TEST_TIMEOUT=600
|
|
OPENSTACKSDK_FUNC_TEST_TIMEOUT_LOAD_BALANCER=600
|
|
# OPENSTACKSDK_DEMO_CLOUD and OS_CLOUD should point to the cloud to test
|
|
# Othee clouds are explicitly set empty to let tests detect absense
|
|
OPENSTACKSDK_DEMO_CLOUD_ALT=
|
|
OPENSTACKSDK_OPERATOR_CLOUD=
|
|
commands =
|
|
stestr --test-path ./openstack/tests/functional/{env:OPENSTACKSDK_TESTS_SUBDIR:} run --serial {posargs} --include-list include-acceptance-regular-user.txt
|
|
stestr slowest
|
|
|
|
[testenv:pep8]
|
|
description =
|
|
Run style checks.
|
|
deps =
|
|
pre-commit
|
|
commands =
|
|
pre-commit run --all-files --show-diff-on-failure
|
|
|
|
[testenv:venv]
|
|
description =
|
|
Run specified command in a virtual environment with all dependencies installed.
|
|
deps =
|
|
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/test-requirements.txt
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/doc/requirements.txt
|
|
commands = {posargs}
|
|
|
|
[testenv:debug]
|
|
description =
|
|
Run specified tests through oslo_debug_helper, which allows use of pdb.
|
|
# allow 1 year, or 31536000 seconds, to debug a test before it times out
|
|
setenv =
|
|
OS_TEST_TIMEOUT=31536000
|
|
allowlist_externals = find
|
|
commands =
|
|
find . -type f -name "*.pyc" -delete
|
|
oslo_debug_helper -t openstack/tests {posargs}
|
|
|
|
[testenv:cover]
|
|
description =
|
|
Run unit tests and generate coverage report.
|
|
setenv =
|
|
{[testenv]setenv}
|
|
PYTHON=coverage run --source openstack --parallel-mode
|
|
commands =
|
|
stestr run {posargs}
|
|
coverage combine
|
|
coverage html -d cover
|
|
coverage xml -o cover/coverage.xml
|
|
|
|
[testenv:ansible]
|
|
description =
|
|
Run ansible tests.
|
|
# Need to pass some env vars for the Ansible playbooks
|
|
passenv =
|
|
HOME
|
|
USER
|
|
ANSIBLE_VAR_*
|
|
deps =
|
|
{[testenv]deps}
|
|
ansible
|
|
commands = {toxinidir}/extras/run-ansible-tests.sh -e {envdir} {posargs}
|
|
|
|
[testenv:docs]
|
|
description =
|
|
Build documentation in HTML format.
|
|
deps =
|
|
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/doc/requirements.txt
|
|
commands =
|
|
sphinx-build -W --keep-going -b html -j auto doc/source/ doc/build/html
|
|
|
|
[testenv:pdf-docs]
|
|
description =
|
|
Build documentation in PDF format.
|
|
deps = {[testenv:docs]deps}
|
|
allowlist_externals =
|
|
make
|
|
commands =
|
|
sphinx-build -W --keep-going -b latex -j auto doc/source/ doc/build/pdf
|
|
make -C doc/build/pdf
|
|
|
|
[testenv:releasenotes]
|
|
description =
|
|
Build release note documentation in HTML format.
|
|
deps =
|
|
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/doc/requirements.txt
|
|
commands =
|
|
sphinx-build -W --keep-going -b html -j auto releasenotes/source releasenotes/build/html
|
|
|
|
[flake8]
|
|
application-import-names = openstack
|
|
# The following are ignored on purpose. It's not super worth it to fix them.
|
|
# However, if you feel strongly about it, patches will be accepted to fix them
|
|
# if they fix ALL of the occurances of one and only one of them.
|
|
# E203 Black will put spaces after colons in list comprehensions
|
|
# E501 Black takes care of line length for us
|
|
# H238 New Style Classes are the default in Python3
|
|
# H301 Black will put commas after imports that can't fit on one line
|
|
# H4 Are about docstrings and there's just a huge pile of pre-existing issues.
|
|
# W503 Is supposed to be off by default but in the latest pycodestyle isn't.
|
|
# Also, both openstacksdk and Donald Knuth disagree with the rule. Line
|
|
# breaks should occur before the binary operator for readability.
|
|
ignore = E203, E501, H301, H238, H4, W503
|
|
import-order-style = pep8
|
|
show-source = True
|
|
exclude = .venv,.git,.tox,dist,doc,*lib/python*,*egg,build,openstack/_services_mixin.py
|
|
|
|
[flake8:local-plugins]
|
|
extension =
|
|
O300 = _hacking:assert_no_setupclass
|
|
paths = ./openstack
|
|
|
|
[doc8]
|
|
extensions = .rst, .yaml
|