Files
ovn-octavia-provider/tox.ini
Fernando Royo 284842f090 Add PyMySQL to test requirements and pin pylint < 4.0.0
The functional tests started failing with "backend
'mysql' unavailable" after Neutron change [0].

Projects consuming Neutron's functional test infrastructure
now need to explicitly declare PyMySQL in their own
test requirements to enable MySQL backend connectivity
for functional tests.

This patch also pins pylint to < 4.0.0 to avoid compatibility
issues as done in other OpenStack projects [1].
More details in [2].

[0] https://review.opendev.org/c/openstack/neutron/+/952258
[1] https://review.opendev.org/c/openstack/octavia/+/964892
[2] https://github.com/pylint-dev/pylint/issues/10669

Depends-on: https://review.opendev.org/c/openstack/requirements/+/965107
Change-Id: I16f325c265e22c3e73abd884cc336a2e27d69bec
Signed-off-by: Fernando Royo <froyo@redhat.com>
2025-11-07 12:18:59 +01:00

171 lines
5.4 KiB
INI

[tox]
minversion = 3.18.0
envlist = docs,py3,pep8
skipsdist = False
ignore_basepython_conflict = True
[testenv]
basepython = python3
usedevelop = True
setenv = VIRTUAL_ENV={envdir}
OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true}
OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:true}
OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:true}
PYTHONWARNINGS=default::DeprecationWarning,ignore::DeprecationWarning:distutils,ignore::DeprecationWarning:site
deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
allowlist_externals = bash
{toxinidir}/tools/pip_install_src_modules.sh
passenv = http_proxy
HTTP_PROXY
https_proxy
HTTPS_PROXY
no_proxy
NO_PROXY
TOX_ENV_SRC_MODULES
commands =
{toxinidir}/tools/pip_install_src_modules.sh "{toxinidir}"
stestr run {posargs}
[testenv:pep8]
commands = flake8
{toxinidir}/tools/check_unit_test_structure.sh
{toxinidir}/tools/coding-checks.sh --pylint '{posargs}'
{[testenv:bandit]commands}
{[testenv:genconfig]commands}
allowlist_externals =
{toxinidir}/tools/check_unit_test_structure.sh
{toxinidir}/tools/coding-checks.sh
{toxinidir}/tools/generate_config_file_samples.sh
[testenv:venv]
commands = {posargs}
[testenv:functional]
setenv =
{[testenv]setenv}
OS_TEST_PATH=./ovn_octavia_provider/tests/functional
OS_TEST_TIMEOUT=240
deps = {[testenv]deps}
-r{toxinidir}/ovn_octavia_provider/tests/functional/requirements.txt
[testenv:dsvm]
# Fake job to define environment variables shared between dsvm jobs
setenv = OS_TEST_TIMEOUT=240
OS_LOG_PATH={env:OS_LOG_PATH:/opt/stack/logs}
commands = false
[testenv:dsvm-functional]
setenv = {[testenv:functional]setenv}
{[testenv:dsvm]setenv}
deps = {[testenv:functional]deps}
passenv =
{[testenv]passenv}
OS_TEST_DBAPI_ADMIN_CONNECTION
commands =
stestr run --isolated {posargs}
[testenv:cover]
setenv =
{[testenv]setenv}
PYTHON=coverage run --source ovn_octavia_provider --parallel-mode
commands =
stestr run --no-subunit-trace {posargs}
coverage combine
coverage html -d cover
coverage xml -o cover/coverage.xml
coverage report --fail-under=92 --skip-covered
[testenv:docs]
deps =
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/doc/requirements.txt
-r{toxinidir}/requirements.txt
commands = sphinx-build -W -b html doc/source doc/build/html
[testenv:pdf-docs]
deps = {[testenv:docs]deps}
allowlist_externals =
make
commands =
sphinx-build -W -b latex doc/source doc/build/pdf
make -C doc/build/pdf
[testenv:debug]
commands = oslo_debug_helper -t ovn_octavia_provider/tests {posargs}
[testenv:releasenotes]
deps = -r{toxinidir}/doc/requirements.txt
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[flake8]
# I202 Additional newline in a group of imports
# W504 line break after binary operator
ignore = W504,I202
# 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
# H904: Delay string interpolations at logging calls
enable-extensions=H106,H203,H204,H205,H904
show-source = True
exclude=./.*,dist,doc,*egg*,build,releasenotes
import-order-style = pep8
[hacking]
import_exceptions = ovn_octavia_provider.i18n
[flake8:local-plugins]
extension =
N322 = checks:check_assert_called_once_with
N328 = checks:check_asserttruefalse
N330 = checks:check_assertempty
N331 = checks:check_assertisinstance
N332 = checks:check_assertequal_for_httpcode
N343 = checks:check_no_imports_from_tests
N344 = checks:check_python3_no_filter
N347 = checks:check_no_import_mock
N348 = checks:check_assertcountequal
paths =./ovn_octavia_provider/hacking
[testenv:genconfig]
commands = {toxinidir}/tools/generate_config_file_samples.sh
allowlist_externals =
{toxinidir}/tools/generate_config_file_samples.sh
# This environment can be used to quickly validate that all needed system
# packages required to successfully execute test targets are installed
[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.
deps = bindep
commands = bindep test
[testenv:requirements]
deps =
-egit+https://opendev.org/openstack/requirements#egg=openstack-requirements
allowlist_externals = bash
commands =
bash -c '{envdir}/src/openstack-requirements/playbooks/files/project-requirements-change.py --req {envdir}/src/openstack-requirements --local {toxinidir} master'
[testenv:bandit]
deps = -r{toxinidir}/test-requirements.txt
commands = bandit -r ovn_octavia_provider -x tests -n5
[testenv:dev]
# run locally (not in the gate) using editable mode
# https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs
commands =
pip install -q -e "git+https://git.openstack.org/openstack/neutron#egg=neutron"
{[testenv]commands}
[testenv:pep8-dev]
deps =
{[testenv]deps}
commands =
{[testenv:dev]commands}
{[testenv:pep8]commands}