forked from ansible/molecule
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tox.ini
199 lines (187 loc) · 5.76 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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
[tox]
minversion = 3.18.0
envlist =
lint
docs
packaging
dockerfile
# keep only N,N-1 ansible versions
py{36,37,38,39}
py{36,37,38,39}-{devel}
# do not enable skip missing to avoid CI false positives
skip_missing_interpreters = False
isolated_build = True
requires =
# 2020-resolver
pip >= 20.2.4
[testenv]
usedevelop = True
# do not put * in passenv as it may break builds do to reduced isolation
passenv =
CI
CONTAINER_*
DOCKER_*
GITHUB_*
HOME
PIP_*
PODMAN_*
PUBLISH
PYTEST_*
SSH_AUTH_SOCK
TERM
setenv =
ANSIBLE_CONFIG={toxinidir}/.ansible.cfg
ANSIBLE_DISPLAY_FAILED_STDERR=1
ANSIBLE_NOCOWS=1
ANSIBLE_VERBOSITY=1
MOLECULE_NO_LOG=0
PYTHONDONTWRITEBYTECODE=1
PYTHONUNBUFFERED=1
_EXTRAS=-l --cov=molecule --no-cov-on-fail --cov-report xml:{envlogdir}/coverage.xml --html={envlogdir}/reports.html --self-contained-html
deps =
devel: ansible>=2.10.0a2,<2.11
# pytest-molecule not used but we want to check that it does not conflict
devel: git+https://github.com/ansible-community/pytest-molecule#egg=pytest-molecule
dockerfile: ansible>=2.10
selinux
py{36,37}: importlib-metadata<2,>=0.12
py: ansible-base
extras =
docker
lint
podman
test
windows
; 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 =
ansibledevel: ansible-galaxy install git+https://github.com/ansible-collections/community.general.git
dockerfile: ansible-galaxy install community.docker
# failsafe as pip may install incompatible dependencies
pip check
# failsafe for preventing changes that may break pytest collection
sh -c "PYTEST_ADDOPTS= python -m pytest -p no:cov --collect-only"
# -n auto used only on unit as is not supported by functional yet
# html report is used by Zuul CI to display reports
python -m pytest {env:_EXTRAS} {env:PYTEST_ADDOPTS:} {posargs}
allowlist_externals =
find
rm
sh
[testenv:lint]
description = Runs all linting tasks
# temporary due to https://github.com/PyCQA/pylint/issues/3876
basepython = python3.8
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.1
extras =
skip_install = true
usedevelop = false
[testenv:docs]
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
passenv = *
usedevelop = False
commands =
python -m sphinx \
-a -n -W \
-b html --color \
-d "{toxinidir}/docs/docstree" \
docs/ "{toxinidir}/docs/docstree/html"
# Print out the output docs dir and a way to serve html:
python -c \
'import pathlib; '\
'docs_dir = pathlib.Path(r"{toxinidir}") / "docs/docstree/html"; 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 =
ansible-base
docs
[testenv:docs-livereload]
description = Invoke sphinx-autobuild to build and reload the HTML docs
basepython = {[testenv:docs]basepython}
passenv = {[testenv:docs]passenv}
usedevelop = {[testenv:docs]usedevelop}
commands =
python -m sphinx_autobuild docs/ "{toxworkdir}/docs/html"
deps =
sphinx-autobuild>=0.7.1,<1.0
extras =
docs
[testenv:dockerfile]
description = Tests validity of embedded Dockerfile template used by docker driver
commands =
ansible-playbook src/molecule/data/validate-dockerfile.yml
extras =
docker
selinux
[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 molecule itself in this env
skip_install = true
deps =
check-manifest
collective.checkdocs >= 0.2
pep517 >= 0.8.2
pip >= 20.2.2
toml >= 0.10.1
twine >= 3.2.0 # pyup: ignore
setenv =
commands =
rm -rfv {toxinidir}/dist/
python -m check_manifest
python -m pep517.build \
--source \
--binary \
--out-dir {toxinidir}/dist/ \
{toxinidir}
# metadata validation
sh -c "python -m twine check {toxinidir}/dist/*"
[testenv:snap]
description = Builds a snap package
usedevelop = false
skip_install = true
commands =
sh -c "type snapcraft && snapcraft build"
[testenv:eco]
description = Smoketest of combining all known to be maintained plugins (ecosystem)
pip_pre = true
extras =
# we install test extra in order to validate it does not drag ansible in
test
deps =
ansible-base >= 2.10.6
molecule-azure >= 0.5.0
molecule-containers >= 0.2.1
molecule-digitalocean >= 0.1
molecule-docker >= 0.2.4
molecule-ec2 >= 0.3
molecule-gce >= 0.2
molecule-hetznercloud >= 1.0.0
molecule-libvirt >= 0.0.3
molecule-lxd >= 0.2
molecule-openstack >= 0.3
molecule-podman >= 0.3.0
molecule-vagrant >= 0.6.1
tox-ansible >= 1.1.0
pipdeptree >= 2.0.0
commands =
pip check
# disabled fails safe because we now install ansible-base on purpose
# as the preinstalled version of ansible from github, cannot be called
# when a virtualenv is activated.
# fail-safe: stop if ansible can be imported, it means it was dragged in
# python -c "import importlib, sys; sys.exit(importlib.util.find_spec('ansible') != None)"
pipdeptree --reverse -e pip,pbr,six,setuptools,toml,urllib3
molecule --version
molecule drivers
bash ./tools/smoketest.sh
allowlist_externals =
bash