Previously, a part of the environments weren't documented in the config, making it difficult for the newbies to figure out what their purposes are. This patch sets the descriptions for all the envs listed with the `tox -av` command, leveraging the dynamic factor-dependent explanation fragments. ```console default environments: linting -> run pre-commit-defined linters under `python3` py38 -> run the tests under `py38` py39 -> run the tests under `py39` py310 -> run the tests under `py310` py311 -> run the tests under `py311` py312 -> run the tests under `py312` py313 -> run the tests under `py313` pypy3 -> run the tests under `pypy3` py38-pexpect -> run the tests against `pexpect` under `py38` py38-xdist -> run the tests with pytest in parallel mode under `py38` py38-unittestextras -> run the tests against the unit test extras under `py38` py38-numpy -> run the tests against `numpy` under `py38` py38-pluggymain -> run the tests against the bleeding edge `pluggy` from Git under `py38` py38-pylib -> run the tests against `py` lib under `py38` doctesting -> run the tests under `~/.pyenv/versions/3.12.3/envs/pytest-pyenv-py3.12.3/bin/python` including doctests doctesting-coverage -> run the tests collecting coverage under `~/.pyenv/versions/3.12.3/envs/pytest-pyenv-py3.12.3/bin/python` including doctests plugins -> run reverse dependency testing against pytest plugins under `~/.pyenv/versions/3.12.3/envs/pytest-pyenv-py3.12.3/bin/python` py38-freeze -> test pytest frozen with `pyinstaller` under `py38` docs -> build the documentation site under `~/src/github/pytest-dev/pytest/doc/en/_build/html` with `python3` docs-checklinks -> check the links in the documentation with `python3` py311-exceptiongroup -> run the tests against `exceptiongroup` under `py311` additional environments: regen -> regenerate documentation examples under `python3` release -> do a release, required posarg of the version number prepare-release-pr -> prepare a release PR from a manual trigger in GitHub actions generate-gh-release-notes -> generate release notes that can be published as GitHub Release nobyte -> run the tests in no-bytecode mode under `~/.pyenv/versions/3.12.3/envs/pytest-pyenv-py3.12.3/bin/python` lsof -> run the tests with `--lsof` pytest CLI option under `~/.pyenv/versions/3.12.3/envs/pytest-pyenv-py3.12.3/bin/python` ```
219 lines
6.0 KiB
INI
219 lines
6.0 KiB
INI
[tox]
|
|
isolated_build = True
|
|
minversion = 3.20.0
|
|
distshare = {homedir}/.tox/distshare
|
|
envlist =
|
|
linting
|
|
py38
|
|
py39
|
|
py310
|
|
py311
|
|
py312
|
|
py313
|
|
pypy3
|
|
py38-{pexpect,xdist,unittestextras,numpy,pluggymain,pylib}
|
|
doctesting
|
|
doctesting-coverage
|
|
plugins
|
|
py38-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 py38-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
|
|
allowlist_externals =
|
|
git
|
|
commands =
|
|
# Retrieve possibly missing commits:
|
|
-git fetch --unshallow
|
|
-git fetch --tags
|
|
|
|
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:py38-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
|
|
github3.py
|
|
pre-commit>=2.9.3
|
|
wheel
|
|
# https://github.com/twisted/towncrier/issues/340
|
|
towncrier<21.3.0
|
|
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}
|