forked from ansible/molecule
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtox.ini
156 lines (147 loc) · 4.69 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
[tox]
minversion = 3.9.0
envlist =
lint
check
py{27,35,36,37}-ansible{25,26,27,28}-{functional,unit}
doc
skipdist = True
skip_missing_interpreters = True
isolated_build = True
[testenv]
# Hotfix for https://github.com/pypa/pip/issues/6434
# Based on https://github.com/jaraco/skeleton/commit/123b0b2
# Check https://github.com/tox-dev/tox/issues/1276 for the final solution
install_command =
python -c 'import subprocess, sys; pip_inst_cmd = sys.executable, "-m", "pip", "install"; subprocess.check_call(pip_inst_cmd + ("pip<19.1", )); subprocess.check_call(pip_inst_cmd + tuple(sys.argv[1:]))' {opts} {packages}
usedevelop = True
passenv = *
setenv =
ANSIBLE_CALLABLE_WHITELIST={env:ANSIBLE_CALLABLE_WHITELIST:timer,profile_roles}
PYTHONDONTWRITEBYTECODE=1
# -n auto used only on unit as is not supported by functional yet
unit: PYTEST_ADDOPTS=test/unit/ --cov={toxinidir}/molecule/ --no-cov-on-fail {env:PYTEST_ADDOPTS:-n auto}
functional: PYTEST_ADDOPTS=test/functional/ {env:PYTEST_ADDOPTS:}
deps =
ansible25: ansible>=2.5,<2.6
ansible26: ansible>=2.6,<2.7
ansible27: ansible>=2.7,<2.8
ansible28: ansible>=2.8,<2.9
ansibledevel: git+https://github.com/ansible/ansible.git
extras =
azure
docker
ec2
gce
hetznercloud
linode
lxc
openstack
vagrant
windows
test
commands_pre =
find {toxinidir} -type f -not -path '{toxinidir}/.tox/*' -path '*/__pycache__/*' -name '*.py[c|o]' -delete
sh -c 'find {homedir}/.cache -type d -path "*/molecule_*" -exec rm -rfv \{\} +;'
commands =
python -m pytest {posargs}
whitelist_externals =
find
sh
[testenv:lint]
commands =
# to run a single linter you can do "pre-commit run flake8"
python -m pre_commit run {posargs:--all}
deps = pre-commit==1.18.0
extras =
skip_install = true
usedevelop = false
[testenv:doc]
description = Invoke sphinx-build to build the HTML docs
# doc requires py3 due to use of f'' strings and using only python3 as
# basepython risks using python3.4 which is not supported.
basepython = python3.7
passenv = *
usedevelop = False
commands =
python -m sphinx \
-a -n -W \
-b html --color \
-d "{toxworkdir}/docs_doctree" \
docs/ "{toxworkdir}/docs_out"
# Print out the output docs dir and a way to serve html:
python -c \
'import pathlib; '\
'docs_dir = pathlib.Path(r"{toxworkdir}") / "docs_out"; index_file = docs_dir / "index.html"; print(f"\nDocumentation available under `file://\{index_file\}`\n\nTo serve docs, use `python3 -m http.server --directory \{docs_dir\} 0`\n")'
extras =
docs
# generic environment that should cover anything that is not a linter or a unit/functional test
[testenv:check]
# reuse existing envdir to avoid increased footprint
envdir = {toxworkdir}/py27-ansible25-unit
deps =
{[testenv]deps}
collective.checkdocs==0.2
twine==1.13.0
usedevelop = False
# Ref: https://twitter.com/di_codes/status/1044358639081975813
commands =
# verifies that pytest collection works without specific folders mentioned
python -m pytest --collect-only
# metadata validation
python -m setup checkdocs check --metadata --restructuredtext --strict --verbose
python -m twine check .tox/dist/*
[testenv:build-docker]
# skip under Windows
platform = ^darwin|^linux
# `usedevelop = True` overrided `skip_install` instruction, it's unwanted
usedevelop = False
# don't install Molecule in this env
skip_install = True
# don't install any Python dist deps
deps =
setuptools_scm==3.3.3
# reset pre-commands
commands_pre =
# build the docker container
commands =
sh -c '\
TAG=$(python -c "from setuptools_scm import get_version; print(get_version())") && \
echo Building version "$TAG"... && \
sudo docker build \
--pull --rm \
{posargs:-t ansible/molecule:$TAG} .\
'
whitelist_externals =
sh
[testenv:build-dists-local]
description =
Generate dists which may be not ready
for upload to PyPI because of
containing PEP440 local version part
# `usedevelop = true` overrides `skip_install` instruction, it's unwanted
usedevelop = false
# don't install molecule itself in this env
skip_install = true
deps =
pep517 >= 0.5.0
setenv =
commands =
python -m pep517.build \
--source \
--binary \
--out-dir {toxinidir}/dist/ \
{toxinidir}
[testenv:build-dists]
description = Generate dists ready for upload to PyPI
usedevelop = {[testenv:build-dists-local]usedevelop}
skip_install = {[testenv:build-dists-local]skip_install}
deps = {[testenv:build-dists-local]deps}
setenv =
PYPI_UPLOAD = true
commands =
rm -rfv {toxinidir}/dist/
{[testenv:build-dists-local]commands}
whitelist_externals =
rm
{[testenv]whitelist_externals}