zuul/tox.ini
Jeremy Stanley 90d7dcb1ed Update unit test container setup and instructions
Update the TESTING.rst file to reflect that just installing and
starting zookeeperd is no longer sufficient now that we require TLS
and auth for the connection, as well as running database servers.
Suggest the container-based setup script instead. Also improve that
script to allow it to be invoked as a normal user, with root command
escalation tool choice (e.g. "sudo") supplied through a ROOTCMD
environment variable, so that things created inside the git worktree
like the CA don't end up root-owned.

Related, the tox-docker plugin previously suggested in the document
is no longer a viable option for the same reasons, so clean up the
plumbing for it in tox.ini as well.

Change-Id: Iac32799425a5bd4b1bdbf56f34a2310241ac4499
2022-08-05 21:00:02 +00:00

115 lines
3.0 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}
[flake8]
# These are ignored intentionally in zuul projects;
# please don't submit patches that solely correct them or enable them.
ignore = E124,E125,E129,E252,E402,E741,H,W503,W504
show-source = True
exclude = .venv,.tox,dist,doc,build,*.egg,node_modules