zuul/tox.ini
James E. Blair 6c8855ede4 Add noxfile and switch to nox
Tox v4 behaves significantly differently than v3, and some of the
more complex things we do with tox would need an overhaul to
continue to use it.  Meanwhile, nox is much simpler and more
flexible, so let's try using it.

This adds a noxfile which should be equivalent to our tox.ini file.
We still need to update the docs build (which involves changes to
base jobs) before we can completely remove tox.

Depends-On: https://review.opendev.org/868134
Change-Id: Ibebb0988d2702d310e46c437e58917db3f091382
2022-12-20 08:57:53 -08:00

108 lines
2.8 KiB
INI

[tox]
minversion = 3.2
skipsdist = True
envlist = linters,py3
ignore_basepython_conflict = True
[testenv]
basepython = python3
install_command = bash tools/pip.sh {opts} {packages}
setenv =
VIRTUAL_ENV={envdir}
OS_TEST_TIMEOUT=360
OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:1}
OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:1}
OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:1}
SQLALCHEMY_WARN_20={env:SQLALCHEMY_WARN_20:1}
PYTHONWARNINGS=always::DeprecationWarning:zuul.driver.sql.sqlconnection,always::DeprecationWarning:tests.base,always::DeprecationWarning:tests.unit.test_database,always::DeprecationWarning:zuul.driver.sql.alembic.env,always::DeprecationWarning:zuul.driver.sql.alembic.script
passenv =
NODEPOOL_ZK_HOST
OS_LOG_CAPTURE
OS_LOG_DEFAULTS
OS_STDERR_CAPTURE
OS_STDOUT_CAPTURE
YARN_REGISTRY
ZUUL_MYSQL_HOST
ZUUL_MYSQL_PORT
ZUUL_POSTGRES_HOST
ZUUL_SCHEDULER_COUNT
ZUUL_TEST_ROOT
ZUUL_ZK_HOST
ZUUL_ZK_CA
ZUUL_ZK_CERT
ZUUL_ZK_KEY
usedevelop = True
whitelist_externals = bash
deps =
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands =
bash -c 'stestr run --slowest --concurrency=`python -c "import multiprocessing; print(max(int(multiprocessing.cpu_count()-1),1))"` {posargs}'
[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.
usedevelop = False
install_command = pip install {opts} {packages}
deps = bindep
commands = bindep test
[testenv:linters]
usedevelop = False
install_command = pip install {opts} {packages}
deps =
flake8
openapi-spec-validator
commands =
flake8 {posargs}
openapi-spec-validator web/public/openapi.yaml
[testenv:cover]
setenv =
{[testenv]setenv}
PYTHON=coverage run --source zuul --parallel-mode
commands =
stestr run {posargs}
coverage combine
coverage html -d cover
coverage xml -o cover/coverage.xml
[testenv:docs]
install_command = pip install {opts} {packages}
deps =
-r{toxinidir}/doc/requirements.txt
-r{toxinidir}/test-requirements.txt
commands =
sphinx-build -E -W -d doc/build/doctrees -b html doc/source/ doc/build/html
[testenv:venv]
commands = {posargs}
[testenv:zuul_client]
commands =
stestr run --concurrency=1 --test-path ./tests/zuul_client {posargs}
deps =
zuul-client
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt
[testenv:remote]
passenv =
NODEPOOL_ZK_HOST
OS_LOG_CAPTURE
OS_LOG_DEFAULTS
OS_STDERR_CAPTURE
OS_STDOUT_CAPTURE
YARN_REGISTRY
ZUUL_REMOTE_IPV4
ZUUL_SSH_KEY
ZUUL_TEST_ROOT
ZUUL_ZK_HOST
ZUUL_ZK_CA
ZUUL_ZK_CERT
ZUUL_ZK_KEY
commands =
stestr run --test-path ./tests/remote {posargs}