forked from nedbat/coveragepy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtox.ini
132 lines (114 loc) · 5.25 KB
/
tox.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
# For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
[tox]
# When changing this list, be sure to check the [gh-actions] list below.
# PYVERSIONS
envlist = py{37,38,39,310,311,312}, pypy3, doc, lint
skip_missing_interpreters = {env:COVERAGE_SKIP_MISSING_INTERPRETERS:True}
toxworkdir = {env:TOXWORKDIR:.tox}
[testenv]
usedevelop = True
extras =
toml
# PYVERSIONS
deps =
-r requirements/pip.pip
-r requirements/pytest.pip
py{37,38,39,310,311}: -r requirements/light-threads.pip
# Windows can't update the pip version with pip running, so use Python
# to install things.
install_command = python -m pip install -U {opts} {packages}
passenv = *
setenv =
pypy{3,37,38,39}: COVERAGE_NO_CTRACER=no C extension under PyPy
# For some tests, we need .pyc files written in the current directory,
# so override any local setting.
PYTHONPYCACHEPREFIX=
commands =
# Create tests/zipmods.zip
python igor.py zip_mods
# Build the C extension and test with the CTracer
python setup.py --quiet build_ext --inplace
python -m pip install -q -e .
python igor.py test_with_tracer c {posargs}
# Remove the C extension so that we can test the PyTracer
python igor.py remove_extension
# Test with the PyTracer
python igor.py test_with_tracer py {posargs}
[testenv:anypy]
# $set_env.py: COVERAGE_ANYPY - The custom Python for "tox -e anypy"
# For running against my own builds of CPython, or any other specific Python.
basepython = {env:COVERAGE_ANYPY}
[testenv:doc]
# Build the docs so we know if they are successful. We build twice: once with
# -q to get all warnings, and once with -QW to get a success/fail status
# return.
deps =
-r doc/requirements.pip
allowlist_externals =
make
commands =
# If this command fails, see the comment at the top of doc/cmd.rst
python -m cogapp -cP --check --verbosity=1 doc/*.rst
#doc8 -q --ignore-path 'doc/_*' doc CHANGES.rst README.rst
sphinx-build -b html -aEnqW doc doc/_build/html
rst2html.py --strict README.rst doc/_build/trash
- sphinx-build -b html -b linkcheck -aEnq doc doc/_build/html
- sphinx-build -b html -b linkcheck -aEnQW doc doc/_build/html
[testenv:lint]
deps =
-r requirements/lint.pip
setenv =
{[testenv]setenv}
LINTABLE=coverage tests doc ci igor.py setup.py __main__.py
commands =
python -m tabnanny {env:LINTABLE}
python igor.py check_eol
# If this command fails, see the comment at the top of doc/cmd.rst
python -m cogapp -cP --check --verbosity=1 doc/*.rst
python -m cogapp -cP --check --verbosity=1 .github/workflows/*.yml
#doc8 -q --ignore-path 'doc/_*' doc CHANGES.rst README.rst
python -m pylint --notes= {env:LINTABLE}
check-manifest --ignore 'doc/sample_html/*,.treerc'
# If 'build -q' becomes a thing (https://github.com/pypa/build/issues/188),
# this can be simplifed:
python igor.py quietly "python -m build"
twine check dist/*
[testenv:mypy]
deps =
-r requirements/mypy.pip
setenv =
{[testenv]setenv}
C1=coverage/__init__.py coverage/__main__.py coverage/annotate.py coverage/bytecode.py
C2=coverage/cmdline.py coverage/collector.py coverage/config.py coverage/context.py coverage/control.py
C3=coverage/data.py coverage/debug.py coverage/disposition.py coverage/env.py coverage/exceptions.py coverage/execfile.py
C4=coverage/files.py coverage/inorout.py coverage/jsonreport.py coverage/lcovreport.py coverage/misc.py coverage/multiproc.py coverage/numbits.py
C5=coverage/parser.py coverage/phystokens.py coverage/plugin.py coverage/plugin_support.py coverage/python.py
C6=coverage/report.py coverage/results.py coverage/sqldata.py coverage/summary.py
C7=coverage/templite.py coverage/tomlconfig.py coverage/types.py coverage/version.py coverage/xmlreport.py
# not done yet: html.py pytracer.py
TYPEABLE_C={env:C1} {env:C2} {env:C3} {env:C4} {env:C5} {env:C6} {env:C7}
T1=tests/conftest.py tests/coveragetest.py tests/goldtest.py tests/helpers.py tests/mixins.py tests/osinfo.py
T2=tests/test_annotate.py tests/test_api.py tests/test_arcs.py tests/test_cmdline.py tests/test_collector.py tests/test_concurrency.py
T3=tests/test_config.py tests/test_context.py tests/test_coverage.py tests/test_data.py tests/test_debug.py tests/test_execfile.py
T4=tests/test_filereporter.py tests/test_files.py tests/test_goldtest.py tests/test_html.py tests/test_json.py tests/test_lcov.py
T5=tests/test_misc.py tests/test_mixins.py tests/test_numbits.py tests/test_oddball.py tests/test_parser.py tests/test_phystokens.py
T6=tests/test_process.py tests/test_python.py tests/test_report.py tests/test_results.py tests/test_setup.py
T7=tests/test_summary.py tests/test_templite.py tests/test_testing.py tests/test_venv.py tests/test_version.py tests/test_xml.py
# not done yet: test_plugins.py
TYPEABLE_T={env:T1} {env:T2} {env:T3} {env:T4} {env:T5} {env:T6} {env:T7}
TYPEABLE={env:TYPEABLE_C} {env:TYPEABLE_T}
commands =
# PYVERSIONS
mypy --python-version=3.7 {env:TYPEABLE}
mypy --python-version=3.12 {env:TYPEABLE}
[gh-actions]
# PYVERSIONS
python =
3.7: py37
3.8: py38
3.9: py39
3.10: py310
3.11: py311
3.12: py312
pypy-3: pypy3