forked from ansible/molecule
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtox.ini
154 lines (144 loc) · 4.23 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
[tox]
minversion = 4.2.2
envlist =
lint
docs
pkg
# do not put specific python versions here, but use them when calling tox
py
py-{devel}
# do not enable skip missing to avoid CI false positives
skip_missing_interpreters = False
isolated_build = True
[testenv]
# both options needed to workaround https://github.com/tox-dev/tox/issues/2197
usedevelop = true
skip_install = false
# do not put * in passenv as it may break builds do to reduced isolation
passenv =
CI
CONTAINER_*
DISPLAY
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
COVERAGE_FILE={env:COVERAGE_FILE:{toxworkdir}/.coverage.{envname}}
COVERAGE_PROCESS_START={toxinidir}/pyproject.toml
MOLECULE_NO_LOG=0
PIP_DISABLE_PIP_VERSION_CHECK=1
PYTHONDONTWRITEBYTECODE=1
PYTHONUNBUFFERED=1
# Temporare remove "-n auto" as it seems to break coverage on this project.
_EXTRAS=-l
deps =
devel: git+https://github.com/ansible/ansible#egg=ansible-core
# 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
extras =
test
commands =
ansibledevel: ansible-galaxy install git+https://github.com/ansible-collections/community.general.git
# 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 >>/dev/null"
sh -c "rm -f .tox/.coverage.*"
# html report is used by Zuul CI to display reports
coverage run -m pytest {env:_EXTRAS} {env:PYTEST_ADDOPTS:} {posargs}
allowlist_externals =
find
rm
sh
[testenv:lint]
description = Runs all linting tasks
# python pinned in order to have pip-compile output reproducible
basepython = python3.9
commands =
# to run a single linter you can do "pre-commit run flake8"
python -m pre_commit run {posargs:--all --show-diff-on-failure}
deps =
pre-commit>=2.21.0
check-jsonschema>=0.20.0
jsonschema>=4.17.3
setenv =
{[testenv]setenv}
skip_install = true
usedevelop = false
[testenv:docs]
description = Build documentation
passenv = *
usedevelop = true
commands =
mkdocs build --strict
linkchecker -f linkcheckerrc site
extras =
docs
[testenv:pkg]
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 =
build >= 0.9.0
twine >= 4.0.2 # pyup: ignore
setenv =
commands =
rm -rfv {toxinidir}/dist/
python -m build \
--outdir {toxinidir}/dist/ \
{toxinidir}
# metadata validation
sh -c "python -m twine check --strict {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
usedevelop = true
extras =
test
deps =
molecule-plugins[azure,containers,docker,ec2,gce,podman,vagrant]>=23.0.0
tox-ansible >= 1.5.1
pipdeptree >= 2.0.0
commands =
pip check
# disabled fails safe because we now install ansible-core 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
[testenv:coverage]
description = Combines and displays coverage results
commands =
-sh -c "coverage combine --append .tox/.coverage.*"
# needed by codecov github actions:
coverage xml -i
# just for humans running it:
coverage report -i
deps =
coverage[toml]