pytest/tox.ini

199 lines
5.3 KiB
INI

[tox]
isolated_build = True
minversion = 3.20.0
distshare = {homedir}/.tox/distshare
envlist =
linting
py37
py38
py39
py310
py311
py312
pypy3
py37-{pexpect,xdist,unittestextras,numpy,pluggymain,pylib}
doctesting
plugins
py37-freeze
docs
docs-checklinks
# checks that 3.11 native ExceptionGroup works with exceptiongroup
# not included in CI.
py311-exceptiongroup
[testenv]
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:}
# Configuration to run with coverage similar to CI, e.g.
# "tox -e py37-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 = testing
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]
skip_install = True
basepython = python3
deps = pre-commit>=2.9.3
commands = pre-commit run --all-files --show-diff-on-failure {posargs:}
[testenv:docs]
basepython = python3
usedevelop = True
deps =
-r{toxinidir}/doc/en/requirements.txt
# https://github.com/twisted/towncrier/issues/340
towncrier<21.3.0
commands =
python scripts/towncrier-draft-to-file.py
# the '-t changelog_towncrier_draft' tags makes sphinx include the draft
# changelog in the docs; this does not happen on ReadTheDocs because it uses
# the standard sphinx command so the 'changelog_towncrier_draft' is never set there
sphinx-build -W --keep-going -b html doc/en doc/en/_build/html -t changelog_towncrier_draft {posargs:}
[testenv:docs-checklinks]
basepython = python3
usedevelop = True
changedir = doc/en
deps = -r{toxinidir}/doc/en/requirements.txt
commands =
sphinx-build -W -q --keep-going -b linkcheck . _build
[testenv:regen]
changedir = doc/en
basepython = python3
passenv =
SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST
deps =
dataclasses
PyYAML
regendoc>=0.8.1
sphinx
allowlist_externals =
make
commands =
make regen
[testenv:plugins]
# 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 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:py37-freeze]
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:publish-gh-release-notes]
description = create GitHub release after deployment
basepython = python3
usedevelop = True
passenv =
GH_RELEASE_NOTES_TOKEN
GITHUB_REF
GITHUB_REPOSITORY
deps =
github3.py
pypandoc
commands = python scripts/publish-gh-release-notes.py {posargs}
[flake8]
max-line-length = 120
extend-ignore =
; whitespace before ':'
E203
; Missing Docstrings
D100,D101,D102,D103,D104,D105,D106,D107
; Whitespace Issues
D202,D203,D204,D205,D209,D213
; Quotes Issues
D302
; Docstring Content Issues
D400,D401,D401,D402,D405,D406,D407,D408,D409,D410,D411,D412,D413,D414,D415,D416,D417
[isort]
; This config mimics what reorder-python-imports does.
force_single_line = 1
known_localfolder = pytest,_pytest
known_third_party = test_source,test_excinfo
force_alphabetical_sort_within_sections = 1