py-twisted/tox.ini

192 lines
6.4 KiB
INI

; tox configuration file for running tests.
;
; The main trial based environments are defined based on a set of factors. Each
; factor will trigger a different behavior. Multiple factors can be set for the
; same environment:
;
; * alldeps - install all possible dependencies.
; * nodeps - avoid installing any dependencies apart from testing tools.
; * withcov - run the tests wrapped using the coverage.
; * nocov - run the tests directly, without using the coverage wrapper.
; * release-prepare - build the sdist and wheel distribution and run tests for them
; * posix - prepare the tests to be run in a Linux/Unix/macOS environment.
; * macos - prepare the tests to be run in a macOS 10.11+ environment (superset of posix)
; * windows - prepare the tests to be executed under Windows.
;
; See README.rst for example tox commands.
;
[tox]
minversion=3.24.1
requires=
virtualenv>=20.7.2
tox-wheel>=0.6.0
skip_missing_interpreters=True
envlist=lint, mypy,
apidocs, narrativedocs, newsfragment,
release-prepare,
alldeps-nocov
isolated_build=true
[default]
; Files and directories that contain Python source for linting.
sources = setup.py src/ docs/conch/examples docs/mail/examples docs/names/examples docs/pair/examples docs/web/examples docs/words/examples
; These examples fail lint, see https://twistedmatrix.com/trac/ticket/9952
; docs/core/examples
[testenv]
# Wheel based testing is required as part of our release process.
# If you remove the wheels from here, then also update the release
# process to generate its own wheels.
wheel = True
parallel_show_output = True
;; dependencies managed by extras in setup.cfg
extras =
; The "nodeps" build still depends on PyHamcrest.
nodeps: test
; We also need to include `dev_release` so that we can test our
; release helpers or documentation generation.
alldeps: all_non_platform, dev_release
windows: windows_platform
alldeps-macos: osx_platform
serial: serial
{withcov}: dev
;; dependencies that are not specified as extras
deps =
lint: pre-commit
; bugfix for https://github.com/sphinx-doc/sphinx/pull/9513/ on py310rc1
alldeps: sphinx @ https://github.com/sphinx-doc/sphinx/archive/514fca7a407f03fae4c788178555a74256936655.tar.gz
; All environment variables are passed.
passenv = *
setenv =
; Enable sub-processes coverage reports and store coverage reports in a
; known location.
COVERAGE_PROCESS_START = {toxinidir}/.coveragerc
COVERAGE_FILE = {toxinidir}/.coverage
# Help tests know where the base directory is.
TOX_INI_DIR = {toxinidir}
; If serial or windows extras, force serial testing
{windows,serial}: TWISTED_FORCE_SERIAL_TESTS = 1
skip_install =
lint: True
commands =
;
; Display information about Python interpreter
; which will be used in subsequent steps
;
python {toxinidir}/admin/dump_all_version_info.py
posix: python -c "print('Running on POSIX (no special dependencies)')"
; Run tests without wrapping them using coverage.
nocov: python -m twisted.trial --temp-directory={envtmpdir}/_trial_temp --reactor={env:TWISTED_REACTOR:default} --reporter={env:TRIAL_REPORTER:verbose} {env:TRIAL_ARGS:} {posargs:twisted}
; Run the tests wrapped using coverage.
withcov: python {toxinidir}/admin/_copy.py {toxinidir}/admin/zz_coverage.pth {envsitepackagesdir}/zz_coverage.pth
withcov: coverage erase
withcov: coverage run -p --rcfile={toxinidir}/.coveragerc -m twisted.trial --temp-directory={envtmpdir}/_trial_temp --reactor={env:TWISTED_REACTOR:default} --reporter={env:TRIAL_REPORTER:verbose} {env:TRIAL_ARGS:} {posargs:twisted}
lint: pre-commit {posargs:run --all-files --show-diff-on-failure}
newsfragment: python {toxinidir}/bin/admin/check-newsfragment "{toxinidir}"
[testenv:towncrier]
description = Create the release notes from the current fragment files found in the source tree.
; towncrier needs Twisted install to get the version
; and dev_release requires the towncrier package.
extras =
dev_release
commands =
towncrier --yes
#
# `narrativedocs` environment is designed to build the complete documentation HTML files.
#
# It tries to run as close as possible to the Read The Docs environment, as
# that is the environment we use for the release.
#
[testenv:narrativedocs]
description = Build the full documentation (narrative and apidocs).
; Documentation needs Twisted install to get the version.
extras =
dev_release
deps =
; bugfix for https://github.com/sphinx-doc/sphinx/pull/9513/ on py310rc1
sphinx @ https://github.com/sphinx-doc/sphinx/archive/514fca7a407f03fae4c788178555a74256936655.tar.gz
setenv =
# Set this to `True` to run similar to Read The Docs.
READTHEDOCS=False
READTHEDOCS_LANGUAGE=en
READTHEDOCS_VERSION=1.0.0.dev0
commands =
sphinx-build -aW -b html -d {toxinidir}/docs/_build {toxinidir}/docs {toxinidir}/docs/_build/
#
# `apidocs` environment is designed to build only the API doc HTML files.
#
# This is here to help during the development process and debugging.
# It is not used for the release.
#
# API docs build violation are visible to stdout.
#
# The resulting files can be viewed with web browsers from the local `apidocs`
# path.
[testenv:apidocs]
description = Build the API documentation.
extras = dev_release
commands = {toxinidir}/bin/admin/build-apidocs {toxinidir}/src/ apidocs
deps =
; bugfix for https://github.com/sphinx-doc/sphinx/pull/9513/ on py310rc1
sphinx @ https://github.com/sphinx-doc/sphinx/archive/514fca7a407f03fae4c788178555a74256936655.tar.gz
[testenv:mypy]
description = run Mypy (static type checker)
extras = mypy
# https://github.com/twisted/incremental/pull/69
deps = incremental @ https://github.com/twisted/incremental/archive/refs/heads/trunk.tar.gz
commands =
mypy \
--cache-dir="{toxworkdir}/mypy_cache" \
{tty:--pretty:} \
{posargs:src}
;
; Create sdist and wheel packages and run basic tests on them.
; Makes the packages available in root `dist/` directory.
;
[testenv:release-prepare]
deps =
pep517
twine
check-manifest>=0.44
whitelist_externals =
cp
rm
commands =
check-manifest --ignore "docs/_build/**,docs/historic/**,admin/**,bin/admin/**"
rm -rf {toxinidir}/dist
cp -r {distdir} {toxinidir}/dist # copy the wheel built by tox-wheel
{envpython} -m pep517.build --source --out-dir={toxinidir}/dist {toxinidir}
twine check {toxinidir}/dist/*.*