forked from pypa/virtualenv
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tox.ini
130 lines (112 loc) · 4.15 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
[tox]
minversion = 3.3.0
envlist = fix_lint, embed, py{27,34,35,36,37}, pypy{,3}, cross_python{2,3}, docs, package_readme
isolated_build = true
skip_missing_interpreters = true
[testenv]
description = run tests with {basepython}
setenv = PIP_DISABLE_VERSION_CHECK = 1
COVERAGE_FILE = {env:COVERAGE_FILE:{toxworkdir}/.coverage.{envname}}
extras = testing
commands = pytest {posargs:\
--cov=virtualenv \
--cov-config="{toxinidir}/tox.ini" \
--timeout=180 \
--junitxml={env:JUNIT_XML_FILE:{toxworkdir}/.test.{envname}.xml} \
. }
[testenv:.package]
deps =
[coverage:run]
branch = false
[coverage:report]
skip_covered = True
show_missing = True
[coverage:paths]
source = src
.tox/*/lib/python*/site-packages
.tox/pypy*/site-packages
.tox\*\Lib\site-packages
*/src
*\src
[testenv:coverage]
description = [run locally after tests]: combine coverage data and create report;
generates a diff coverage against origin/master (can be changed by setting DIFF_AGAINST env var)
deps = coverage >= 4.4.1, < 5
diff_cover
extras =
skip_install = True
passenv = DIFF_AGAINST
setenv = COVERAGE_FILE={toxworkdir}/.coverage
commands = coverage erase --rcfile="{toxinidir}/tox.ini"
coverage combine --rcfile="{toxinidir}/tox.ini"
coverage report -m --rcfile="{toxinidir}/tox.ini"
coverage xml -o {toxworkdir}/coverage.xml --rcfile="{toxinidir}/tox.ini"
coverage html -d {toxworkdir}/htmlcov --rcfile="{toxinidir}/tox.ini"
diff-cover --compare-branch {env:DIFF_AGAINST:origin/master} {toxworkdir}/coverage.xml
[testenv:cross_python2]
description = test creating a python3 venv with a python2-based virtualenv
basepython = python2
extras =
commands = virtualenv -p python3 {envtmpdir}/{envname}
{envtmpdir}/{envname}/bin/python -V 2>&1 | grep "Python 3"
[testenv:cross_python3]
description = test creating a python2 venv with a python3-based virtualenv
basepython = python3
extras =
commands = virtualenv -p python2 {envtmpdir}/{envname}
{envtmpdir}/{envname}/bin/python -V 2>&1 | grep "Python 2"
[testenv:docs]
basepython = python3
description = build documentation
extras = docs
commands = sphinx-build -d "{envtmpdir}/doctree" docs "{toxworkdir}/docs_out" --color -W -bhtml {posargs}
python -c 'import pathlib; print("documentation available under file://\{0\}".format(pathlib.Path(r"{toxworkdir}") / "docs_out" / "index.html"))'
[testenv:package_readme]
description = check that the long description is valid (need for PyPi)
deps = twine >= 1.12.1
pip >= 18.0.0
skip_install = true
extras =
commands = pip wheel -w {envtmpdir}/build --no-deps .
twine check {envtmpdir}/build/*
[testenv:embed]
description = embed dependencies into virtualenv.py
skip_install = true
extras =
commands = python {toxinidir}/bin/rebuild-script.py
[testenv:upgrade]
description = upgrade pip/wheels/setuptools to latest
skip_install = true
extras = pip >= 18.1.0
commands = python {toxinidir}/bin/rebuild-support.py
[testenv:fix_lint]
description = format the code base to adhere to our styles, and complain about what we cannot do automatically
basepython = python3.7
passenv = HOMEPATH PROGRAMDATA http_proxy https_proxy no_proxy
deps = pre-commit == 1.12.0
skip_install = True
commands = pre-commit run --all-files --show-diff-on-failure
python -c 'import pathlib; print("hint: run \{\} install to add checks as pre-commit hook".format(pathlib.Path(r"{envdir}") / "bin" / "pre-commit"))'
[isort]
multi_line_output = 3
include_trailing_comma = True
force_grid_wrap = 0
line_length = 120
known_standard_library = ConfigParser
known_first_party = virtualenv
known_third_party = mock,pytest
[flake8]
max-complexity = 22
max-line-length = 120
ignore = E203, W503, C901, E402
exclude = virtualenv_embedded/site.py
[pep8]
max-line-length = 120
[testenv:dev]
description = generate a DEV environment
extras = testing, docs
# required to make looponfail reload on every source code change
usedevelop = True
basepython = python3.7
commands = python -m pip list --format=columns
python -c 'import sys; print(sys.executable)'