mirror of https://github.com/pytest-dev/pytest.git
209 lines
5.8 KiB
INI
209 lines
5.8 KiB
INI
[tox]
|
|
isolated_build = True
|
|
minversion = 3.20.0
|
|
distshare = {homedir}/.tox/distshare
|
|
envlist =
|
|
linting
|
|
py39
|
|
py310
|
|
py311
|
|
py312
|
|
py313
|
|
pypy3
|
|
py39-{pexpect,xdist,unittestextras,numpy,pluggymain,pylib}
|
|
doctesting
|
|
doctesting-coverage
|
|
plugins
|
|
py39-freeze
|
|
docs
|
|
docs-checklinks
|
|
|
|
# checks that 3.11 native ExceptionGroup works with exceptiongroup
|
|
# not included in CI.
|
|
py311-exceptiongroup
|
|
|
|
|
|
|
|
[testenv]
|
|
description =
|
|
run the tests
|
|
coverage: collecting coverage
|
|
exceptiongroup: against `exceptiongroup`
|
|
nobyte: in no-bytecode mode
|
|
lsof: with `--lsof` pytest CLI option
|
|
numpy: against `numpy`
|
|
pexpect: against `pexpect`
|
|
pluggymain: against the bleeding edge `pluggy` from Git
|
|
pylib: against `py` lib
|
|
unittestextras: against the unit test extras
|
|
xdist: with pytest in parallel mode
|
|
under `{basepython}`
|
|
doctesting: including doctests
|
|
commands =
|
|
{env:_PYTEST_TOX_COVERAGE_RUN:} pytest {posargs:{env:_PYTEST_TOX_DEFAULT_POSARGS:}}
|
|
doctesting: {env:_PYTEST_TOX_COVERAGE_RUN:} pytest --doctest-modules --pyargs _pytest
|
|
coverage: coverage combine
|
|
coverage: coverage report -m
|
|
passenv =
|
|
COVERAGE_*
|
|
PYTEST_ADDOPTS
|
|
TERM
|
|
SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST
|
|
setenv =
|
|
_PYTEST_TOX_DEFAULT_POSARGS={env:_PYTEST_TOX_POSARGS_DOCTESTING:} {env:_PYTEST_TOX_POSARGS_LSOF:} {env:_PYTEST_TOX_POSARGS_XDIST:}
|
|
|
|
# See https://docs.python.org/3/library/io.html#io-encoding-warning
|
|
# If we don't enable this, neither can any of our downstream users!
|
|
PYTHONWARNDEFAULTENCODING=1
|
|
|
|
# Configuration to run with coverage similar to CI, e.g.
|
|
# "tox -e py39-coverage".
|
|
coverage: _PYTEST_TOX_COVERAGE_RUN=coverage run -m
|
|
coverage: _PYTEST_TOX_EXTRA_DEP=coverage-enable-subprocess
|
|
coverage: COVERAGE_FILE={toxinidir}/.coverage
|
|
coverage: COVERAGE_PROCESS_START={toxinidir}/.coveragerc
|
|
|
|
doctesting: _PYTEST_TOX_POSARGS_DOCTESTING=doc/en
|
|
|
|
nobyte: PYTHONDONTWRITEBYTECODE=1
|
|
|
|
lsof: _PYTEST_TOX_POSARGS_LSOF=--lsof
|
|
|
|
xdist: _PYTEST_TOX_POSARGS_XDIST=-n auto
|
|
extras = dev
|
|
deps =
|
|
doctesting: PyYAML
|
|
exceptiongroup: exceptiongroup>=1.0.0rc8
|
|
numpy: numpy>=1.19.4
|
|
pexpect: pexpect>=4.8.0
|
|
pluggymain: pluggy @ git+https://github.com/pytest-dev/pluggy.git
|
|
pylib: py>=1.8.2
|
|
unittestextras: twisted
|
|
unittestextras: asynctest
|
|
xdist: pytest-xdist>=2.1.0
|
|
xdist: -e .
|
|
{env:_PYTEST_TOX_EXTRA_DEP:}
|
|
|
|
[testenv:linting]
|
|
description =
|
|
run pre-commit-defined linters under `{basepython}`
|
|
skip_install = True
|
|
basepython = python3
|
|
deps = pre-commit>=2.9.3
|
|
commands = pre-commit run --all-files --show-diff-on-failure {posargs:}
|
|
setenv =
|
|
# pre-commit and tools it launches are not clean of this warning.
|
|
PYTHONWARNDEFAULTENCODING=
|
|
|
|
[testenv:docs]
|
|
description =
|
|
build the documentation site under \
|
|
`{toxinidir}{/}doc{/}en{/}_build{/}html` with `{basepython}`
|
|
basepython = python3.12 # sync with rtd to get errors
|
|
usedevelop = True
|
|
deps =
|
|
-r{toxinidir}/doc/en/requirements.txt
|
|
commands =
|
|
sphinx-build \
|
|
-j auto \
|
|
-W --keep-going \
|
|
-b html doc/en doc/en/_build/html \
|
|
{posargs:}
|
|
setenv =
|
|
# Sphinx is not clean of this warning.
|
|
PYTHONWARNDEFAULTENCODING=
|
|
|
|
[testenv:docs-checklinks]
|
|
description =
|
|
check the links in the documentation with `{basepython}`
|
|
basepython = python3
|
|
usedevelop = True
|
|
changedir = doc/en
|
|
deps = -r{toxinidir}/doc/en/requirements.txt
|
|
commands =
|
|
sphinx-build -W -q --keep-going -b linkcheck . _build
|
|
setenv =
|
|
# Sphinx is not clean of this warning.
|
|
PYTHONWARNDEFAULTENCODING=
|
|
|
|
[testenv:regen]
|
|
description =
|
|
regenerate documentation examples under `{basepython}`
|
|
changedir = doc/en
|
|
basepython = python3
|
|
passenv =
|
|
SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST
|
|
deps =
|
|
PyYAML
|
|
regendoc>=0.8.1
|
|
sphinx
|
|
allowlist_externals =
|
|
make
|
|
commands =
|
|
make regen
|
|
setenv =
|
|
# We don't want this warning to reach regen output.
|
|
PYTHONWARNDEFAULTENCODING=
|
|
|
|
[testenv:plugins]
|
|
description =
|
|
run reverse dependency testing against pytest plugins under `{basepython}`
|
|
# use latest versions of all plugins, including pre-releases
|
|
pip_pre=true
|
|
# use latest pip to get new dependency resolver (#7783)
|
|
download=true
|
|
install_command=python -m pip install {opts} {packages}
|
|
changedir = testing/plugins_integration
|
|
deps = -rtesting/plugins_integration/requirements.txt
|
|
setenv =
|
|
PYTHONPATH=.
|
|
commands =
|
|
pip check
|
|
pytest bdd_wallet.py
|
|
pytest --cov=. simple_integration.py
|
|
pytest --ds=django_settings simple_integration.py
|
|
pytest --html=simple.html simple_integration.py
|
|
pytest --reruns 5 simple_integration.py pytest_rerunfailures_integration.py
|
|
pytest pytest_anyio_integration.py
|
|
pytest pytest_asyncio_integration.py
|
|
pytest pytest_mock_integration.py
|
|
pytest pytest_trio_integration.py
|
|
pytest pytest_twisted_integration.py
|
|
pytest simple_integration.py --force-sugar --flakes
|
|
|
|
[testenv:py39-freeze]
|
|
description =
|
|
test pytest frozen with `pyinstaller` under `{basepython}`
|
|
changedir = testing/freeze
|
|
deps =
|
|
pyinstaller
|
|
commands =
|
|
{envpython} create_executable.py
|
|
{envpython} tox_run.py
|
|
|
|
[testenv:release]
|
|
description = do a release, required posarg of the version number
|
|
basepython = python3
|
|
usedevelop = True
|
|
passenv = *
|
|
deps =
|
|
colorama
|
|
pre-commit>=2.9.3
|
|
towncrier
|
|
commands = python scripts/release.py {posargs}
|
|
|
|
[testenv:prepare-release-pr]
|
|
description = prepare a release PR from a manual trigger in GitHub actions
|
|
usedevelop = {[testenv:release]usedevelop}
|
|
passenv = {[testenv:release]passenv}
|
|
deps = {[testenv:release]deps}
|
|
commands = python scripts/prepare-release-pr.py {posargs}
|
|
|
|
[testenv:generate-gh-release-notes]
|
|
description = generate release notes that can be published as GitHub Release
|
|
basepython = python3
|
|
usedevelop = True
|
|
deps =
|
|
pypandoc
|
|
commands = python scripts/generate-gh-release-notes.py {posargs}
|