-
Notifications
You must be signed in to change notification settings - Fork 80
/
tox.ini
189 lines (160 loc) · 6.2 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
[tox]
minversion = 2.0
skipsdist = True
envlist = bindep,docs,linters
sitepackages = True
[testenv]
install_command =
pip install -c{env:UPPER_CONSTRAINTS_FILE} {opts} {packages} --isolated
deps =
-r{toxinidir}/test-requirements.txt
commands =
/usr/bin/find . -type f -name "*.pyc" -delete
passenv = *
whitelist_externals =
bash
setenv =
BINDEP_FILE={toxinidir}/bindep.txt
PYTHONUNBUFFERED=1
TEST_IDEMPOTENCE=false
VIRTUAL_ENV={envdir}
WORKING_DIR={toxinidir}
# bug#1682108
PYTHONPATH={envsitepackagesdir}
# RPC product release name
RPC_PRODUCT_RELEASE={env:RPC_PRODUCT_RELEASE:master}
### OSA specific call back files
# Set the checkout to any supported tag, branch, or sha.
# NOTE(cloudnull): This should be set to "master" as soon the gate is capable of
# setting this option.
OSA_RELEASE_BRANCH={env:OSA_RELEASE_BRANCH:master}
OSA_TEST_RELEASE={env:OSA_TEST_RELEASE:master}
OSA_UPPER_CONSTRAINTS={env:OSA_UPPER_CONSTRAINTS:master}
UPPER_CONSTRAINTS_FILE=https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h={env:OSA_UPPER_CONSTRAINTS:master}
OSA_TEST_DEPS=https://git.openstack.org/cgit/openstack/openstack-ansible-tests/plain/test-ansible-deps.txt?h={env:OSA_TEST_RELEASE:master}
OSA_ROLE_REQUIREMENTS=https://git.openstack.org/cgit/openstack/openstack-ansible/plain/ansible-role-requirements.yml?h={env:OSA_RELEASE_BRANCH:master}
basepython = python2.7
[testenv:bindep]
# Deps is empty on purpose
deps =
commands =
bash -c "{toxinidir}/run-bindep.sh"
[testenv:bandit]
deps = -rtest-requirements.txt
commands =
# Ignore B404 about importing subprocess. We're knowingly and intentionally
# using subprocess and don't need a warning about mere usage alone.
# Specific warnings will still come through as they're found.
#
# Until bandit has the ability to log issues at lower severities than it's
# configured to pass/fail based on, we need to run bandit twice. Run it
# once with no severity or confidence level set to get everything, but ignore
# that exit status. Then run it again on the highest severity and confidence
# levels and get our pass/fail status from that.
# This is reported to bandit at https://github.com/PyCQA/bandit/issues/341
- bandit -s B404 -i -l -r playbooks/ scripts/ gating/
bandit -s B404 -iii -lll -r playbooks/ scripts/ gating/
[testenv:docs]
commands =
bash -c "rm -rf doc/build"
doc8 doc
python setup.py build_sphinx
[doc8]
# Settings for doc8:
extensions = .rst
[testenv:releasenotes]
install_command =
pip install -c {toxinidir}/upper-constraints.txt {opts} {packages} --isolated
commands =
sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
# environment used by the -infra templated docs job
[testenv:venv]
commands =
{posargs}
[testenv:tests_clone]
commands =
bash -c "if [ ! -d "{toxinidir}/tests/common" ]; then \
git clone https://git.openstack.org/openstack/openstack-ansible-tests {toxinidir}/tests/common; \
pushd {toxinidir}/tests/common; \
git checkout {env:OSA_TEST_RELEASE:master}; \
popd; \
else \
pushd {toxinidir}/tests/common; \
git fetch origin; \
git checkout {env:OSA_TEST_RELEASE:master}; \
popd; \
fi"
[testenv:pep8]
commands =
{[testenv:tests_clone]commands}
bash -c "{toxinidir}/tests/common/test-pep8.sh"
[flake8]
# Ignores the following rules due to how ansible modules work in general
# F403 'from ansible.module_utils.basic import *' used;
# unable to detect undefined names
ignore=F403,E731
[testenv:bashate]
# PURPOSE:
# This script executes bashate against all the files it find that match
# the search pattern. The search pattern is meant to find any shell
# scripts present in the role.
#
# The test ignores the following rules:
#
# E003: Indent not multiple of 4 (we prefer to use multiples of 2)
#
# E004: Skip adding a newline at the bottom of bash scripts
#
# E006: Line longer than 79 columns (as many scripts use jinja
# templating, this is very difficult)
#
# E040: Syntax error determined using `bash -n` (as many scripts
# use jinja templating, this will often fail and the syntax
# error will be discovered in execution anyway)
commands =
bash -c "grep --recursive --binary-files=without-match \
--files-with-match '^.!.*\(ba\)\?sh$' \
--exclude-dir .tox \
--exclude-dir .git \
--exclude-dir tests \
"{toxinidir}" | xargs bashate --error . --verbose --ignore=E003,E004,E006,E040"
[testenv:ansible]
deps =
{[testenv]deps}
-r{env:OSA_TEST_DEPS}
commands =
bash -c "wget {env:OSA_ROLE_REQUIREMENTS} -O {toxinidir}/tests/common/osa-ansible-role-requirements.yml"
ansible-galaxy install --role-file={toxinidir}/tests/common/osa-ansible-role-requirements.yml \
--roles-path={homedir}/.ansible/roles \
--force
ansible-galaxy install --role-file={toxinidir}/ansible-role-{env:RPC_PRODUCT_RELEASE:master}-requirements.yml \
--roles-path={homedir}/.ansible/roles \
--force
[testenv:ansible-syntax]
deps =
{[testenv:ansible]deps}
commands =
{[testenv:tests_clone]commands}
{[testenv:ansible]commands}
bash -c "{toxinidir}/tests/common/test-ansible-syntax.sh"
[testenv:ansible-lint]
deps =
{[testenv:ansible]deps}
commands =
{[testenv:tests_clone]commands}
{[testenv:ansible]commands}
bash -c "{toxinidir}/tests/common/test-ansible-lint.sh"
[testenv:linters]
deps =
{[testenv:ansible]deps}
commands =
{[testenv:tests_clone]commands}
{[testenv:pep8]commands}
{[testenv:bashate]commands}
{[testenv:ansible-lint]commands}
{[testenv:ansible-syntax]commands}
{[testenv:docs]commands}
[testenv:requirements]
deps = openstack-requirements
setenv = UPPER_CONSTRAINTS_FILE={toxinidir}/upper-constraints.txt
commands = bash -c "generate-constraints -r {toxinidir}/test-requirements.txt -p {envdir}/bin/{basepython} > {toxinidir}/upper-constraints.txt"