aboutsummaryrefslogtreecommitdiff
path: root/tox.ini
diff options
context:
space:
mode:
Diffstat (limited to 'tox.ini')
-rw-r--r--tox.ini85
1 files changed, 85 insertions, 0 deletions
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 000000000..0d13fa8ad
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,85 @@
+[tox]
+minversion = 2.4
+envlist = formatting, py36, py37, py38, py39, py310, pypy, benchmark
+skip_missing_interpreters = true
+
+[testenv:pylint]
+deps =
+ -r {toxinidir}/requirements_test_min.txt
+ pre-commit~=2.13
+commands =
+ pre-commit run pylint --all-files
+
+[testenv:formatting]
+basepython = python3
+deps =
+ -r {toxinidir}/requirements_test_min.txt
+ pre-commit~=2.13
+commands =
+ pre-commit run --all-files
+
+[testenv:mypy]
+basepython = python3
+deps =
+ pre-commit~=2.13
+commands =
+ pre-commit run mypy --all-files
+
+[testenv]
+setenv =
+ COVERAGE_FILE = {toxinidir}/.coverage.{envname}
+deps =
+ -r {toxinidir}/requirements_test.txt
+commands =
+ ; Run tests, ensuring all benchmark tests do not run
+ pytest --benchmark-disable {toxinidir}/tests/ {posargs:}
+
+[testenv:spelling]
+deps =
+ -r {toxinidir}/requirements_test.txt
+commands =
+ pytest {toxinidir}/tests/ {posargs:} -k unittest_spelling
+
+[testenv:coverage-html]
+setenv =
+ COVERAGE_FILE = {toxinidir}/.coverage
+deps =
+ -r {toxinidir}/requirements_test.txt
+skip_install = true
+commands =
+ coverage combine
+ coverage html --ignore-errors --rcfile={toxinidir}/.coveragerc
+
+[testenv:docs]
+changedir = doc/
+deps =
+ -r {toxinidir}/doc/requirements.txt
+commands =
+ sphinx-build -W -b html -d _build/doctrees . _build/html
+
+[testenv:benchmark]
+deps =
+ -r {toxinidir}/requirements_test.txt
+ pygal
+commands =
+ ; Run the only the benchmark tests, grouping output and forcing .json output so we
+ ; can compare benchmark runs
+ pytest --exitfirst \
+ --failed-first \
+ --benchmark-only \
+ --benchmark-save=batch_files \
+ --benchmark-save-data \
+ --benchmark-autosave {toxinidir}/tests \
+ --benchmark-group-by="group" \
+ {posargs:}
+
+[testenv:profile_against_external]
+setenv =
+ PYTEST_PROFILE_EXTERNAL = 1
+deps =
+ -r {toxinidir}/requirements_test.txt
+ gprof2dot
+commands =
+ pytest --exitfirst \
+ --profile-svg \
+ {toxinidir}/tests/profile/test_profile_against_externals.py