96 lines
2.9 KiB
INI
96 lines
2.9 KiB
INI
# Tox (https://tox.readthedocs.io) is a tool for running tests
|
|
# in multiple virtualenvs. This configuration file will run the
|
|
# test suite on all supported python versions. To use it, "pip install tox"
|
|
# and then run "tox" from this directory.
|
|
|
|
[tox]
|
|
envlist = py{36,37,38,39,py3}, docs, linting
|
|
isolated_build = True
|
|
|
|
[testenv]
|
|
setenv = PYTHONDONTWRITEBYTECODE=1
|
|
deps =
|
|
pytest-xdist
|
|
pytest-rerunfailures
|
|
pytest-mock
|
|
ansi2html # soft-dependency
|
|
cov: pytest-cov
|
|
commands =
|
|
!cov: pytest -v -r a --color=yes --html={envlogdir}/report.html --self-contained-html {posargs}
|
|
cov: pytest -v -r a --color=yes --html={envlogdir}/report.html --self-contained-html --cov={envsitepackagesdir}/pytest_html --cov-report=term --cov-report=xml {posargs}
|
|
|
|
[testenv:linting]
|
|
skip_install = True
|
|
basepython = python3
|
|
deps = pre-commit
|
|
commands = pre-commit run --all-files --show-diff-on-failure
|
|
|
|
[testenv:devel]
|
|
description = Tests with unreleased deps
|
|
basepython = python3
|
|
pip_pre = True
|
|
deps =
|
|
{[testenv]deps}
|
|
ansi2html @ git+https://github.com/pycontribs/ansi2html.git
|
|
pytest-rerunfailures @ git+https://github.com/pytest-dev/pytest-rerunfailures.git
|
|
# Temporary disable pytest git install due to
|
|
# https://github.com/pytest-dev/pytest-rerunfailures/issues/134
|
|
# pytest @ git+https://github.com/pytest-dev/pytest.git
|
|
|
|
[testenv:devel-cov]
|
|
description = Tests with unreleased deps and coverage
|
|
basepython = {[testenv:devel]basepython}
|
|
pip_pre = {[testenv:devel]pip_pre}
|
|
deps = {[testenv:devel]deps}
|
|
|
|
[testenv:docs]
|
|
# NOTE: The command for doc building was taken from readthedocs documentation
|
|
# See https://docs.readthedocs.io/en/stable/builds.html#understanding-what-s-going-on
|
|
basepython = python
|
|
changedir = docs
|
|
deps = sphinx
|
|
commands = sphinx-build -b html . _build/html
|
|
|
|
[testenv:packaging]
|
|
description =
|
|
Do packaging/distribution. If tag is not present or PEP440 compliant upload to
|
|
PYPI could fail
|
|
# `usedevelop = true` overrides `skip_install` instruction, it's unwanted
|
|
usedevelop = false
|
|
# don't install package in this env
|
|
skip_install = true
|
|
deps =
|
|
collective.checkdocs >= 0.2
|
|
pep517 >= 0.8.2
|
|
pip >= 20.2.2
|
|
toml >= 0.10.1
|
|
twine >= 3.2.0
|
|
setenv =
|
|
commands =
|
|
rm -rfv {toxinidir}/dist/
|
|
python -m pep517.build \
|
|
--source \
|
|
--binary \
|
|
--out-dir {toxinidir}/dist/ \
|
|
{toxinidir}
|
|
# metadata validation
|
|
python setup.py check
|
|
sh -c "python -m twine check {toxinidir}/dist/*"
|
|
whitelist_externals =
|
|
rm
|
|
sh
|
|
|
|
[flake8]
|
|
max-line-length = 88
|
|
exclude = .eggs,.tox
|
|
# rationale here:
|
|
# https://github.com/psf/black/blob/master/docs/the_black_code_style.md#slices
|
|
extend-ignore = E203
|
|
|
|
[pytest]
|
|
testpaths = testing
|
|
# TODO: Temporary hack until they fix
|
|
# https://github.com/pytest-dev/pytest/issues/6936
|
|
filterwarnings =
|
|
ignore:.*TerminalReporter.writer attribute is deprecated.*:pytest.PytestDeprecationWarning
|