summaryrefslogtreecommitdiff
path: root/tox.ini
blob: 4e9c33fe0217304762f19a4a393138e3d7596e6a (plain)
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
[tox]
envlist = docs,py27,py34,pep8
minversion = 2.3.1
skipsdist = True

[testenv]
setenv = VIRTUAL_ENV={envdir}
passenv = TRACE_FAILONLY
usedevelop = True
install_command =
    pip install -U -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=stable/liberty} {opts} {packages}
deps = -r{toxinidir}/requirements.txt
       -r{toxinidir}/test-requirements.txt
whitelist_externals = sh
commands =
  dsvm-functional: {toxinidir}/tools/deploy_rootwrap.sh {toxinidir} {envdir}/etc {envdir}/bin
  ostestr --regex '{posargs}'
# there is also secret magic in ostestr which lets you run in a fail only
# mode. To do this define the TRACE_FAILONLY environmental variable.

[testenv:api]
basepython = python2.7
passenv = {[testenv]passenv} TEMPEST_CONFIG_DIR
setenv = {[testenv]setenv}
         OS_TEST_PATH=./neutron/tests/api
         TEMPEST_CONFIG_DIR={env:TEMPEST_CONFIG_DIR:/opt/stack/tempest/etc}
         OS_TEST_API_WITH_REST=1

[testenv:api-constraints]
basepython = {[testenv:api]basepython}
passenv = {[testenv:api]passenv}
setenv = {[testenv:api]setenv}

[testenv:common]
# Fake job to define environment variables shared between dsvm/non-dsvm jobs
setenv = OS_TEST_TIMEOUT=180
commands = false

# TODO(ihrachys): remove this target once it is not used in gate
[testenv:py27-constraints]
basepython = python2.7

# TODO(ihrachys): remove this target once it is not used in gate
[testenv:py34-constraints]
basepython = python3.4

[testenv:dsvm]
# Fake job to define environment variables shared between dsvm jobs
setenv = OS_SUDO_TESTING=1
         OS_ROOTWRAP_CMD=sudo {envdir}/bin/neutron-rootwrap {envdir}/etc/neutron/rootwrap.conf
         OS_ROOTWRAP_DAEMON_CMD=sudo {envdir}/bin/neutron-rootwrap-daemon {envdir}/etc/neutron/rootwrap.conf
         OS_FAIL_ON_MISSING_DEPS=1
commands = false

[testenv:functional]
basepython = python2.7
setenv = {[testenv]setenv}
         {[testenv:common]setenv}
         OS_TEST_PATH=./neutron/tests/functional
deps =
  {[testenv]deps}
  -r{toxinidir}/neutron/tests/functional/requirements.txt

[testenv:functional-constraints]
basepython = {[testenv:functional]basepython}
setenv = {[testenv:functional]setenv}
deps =
  {[testenv:functional]deps}

[testenv:dsvm-functional]
basepython = python2.7
setenv = {[testenv:functional]setenv}
         {[testenv:dsvm]setenv}
sitepackages=True
deps =
  {[testenv:functional]deps}

[testenv:dsvm-functional-constraints]
basepython = {[testenv:dsvm-functional]basepython}
setenv = {[testenv:dsvm-functional]setenv}
sitepackages={[testenv:dsvm-functional]sitepackages}
deps =
  {[testenv:functional-constraints]deps}

[testenv:dsvm-fullstack]
setenv = {[testenv]setenv}
         {[testenv:common]setenv}
         {[testenv:dsvm]setenv}
         OS_TEST_PATH=./neutron/tests/fullstack
sitepackages=True
deps =
  {[testenv:functional]deps}

[testenv:dsvm-fullstack-constraints]
setenv =
  {[testenv:dsvm-fullstack]setenv}
sitepackages={[testenv:dsvm-fullstack]sitepackages}
deps =
  {[testenv:functional-constraints]deps}

[tox:jenkins]
sitepackages = True
downloadcache = ~/cache/pip

[testenv:releasenotes]
# TODO(ihrachys): remove once infra supports constraints for this target
install_command = pip install -U {opts} {packages}
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html

[testenv:pep8]
basepython = python2.7
deps =
  {[testenv]deps}
commands=
  # If it is easier to add a check via a shell script, consider adding it in this file
  sh ./tools/misc-sanity-checks.sh
  {toxinidir}/tools/check_unit_test_structure.sh
  # Checks for coding and style guidelines
  flake8
  sh ./tools/coding-checks.sh --pylint '{posargs}'
  neutron-db-manage --config-file neutron/tests/etc/neutron.conf check_migration
whitelist_externals =
  sh
  bash

[testenv:pep8-constraints]
basepython = {[testenv:pep8]basepython}
deps =
  {[testenv]deps}
commands=
  # If it is easier to add a check via a shell script, consider adding it in this file
  sh ./tools/misc-sanity-checks.sh
  {toxinidir}/tools/check_unit_test_structure.sh
  # Checks for coding and style guidelines
  flake8
  sh ./tools/coding-checks.sh --pylint '{posargs}'
  neutron-db-manage --config-file neutron/tests/etc/neutron.conf check_migration
whitelist_externals = {[testenv:pep8]whitelist_externals}

[testenv:cover]
# TODO(ihrachys): remove once infra supports constraints for this target
install_command = pip install -U {opts} {packages}
basepython = python2.7
commands =
  python setup.py testr --coverage --testr-args='{posargs}'

[testenv:venv]
# TODO(ihrachys): remove once infra supports constraints for this target
install_command = pip install -U {opts} {packages}
commands = {posargs}

# TODO(ihrachys): remove this target once it is not used in gate
[testenv:venv-constraints]
# TODO(ihrachys): remove once infra supports constraints for this target
install_command = pip install -U {opts} {packages}
commands = {posargs}

[testenv:docs]
commands = sphinx-build -W -b html doc/source doc/build/html

[testenv:docs-constraints]
commands = {[testenv:docs]commands}

[flake8]
# E125 continuation line does not distinguish itself from next logical line
# E126 continuation line over-indented for hanging indent
# E128 continuation line under-indented for visual indent
# E129 visually indented line with same indent as next logical line
# E265 block comment should start with '# '
# H404 multi line docstring should start with a summary
# H405 multi line docstring summary not separated with an empty line
ignore = E125,E126,E128,E129,E265,H404,H405
show-source = true
builtins = _
# neutron/tests/tempest needs to be excluded so long as it continues
# to be copied directly from tempest, since tempest and neutron do not
# share a flake8 configuration.
exclude = ./.*,build,dist,neutron/openstack/common/*,neutron/tests/tempest

[hacking]
import_exceptions = neutron.i18n
local-check-factory = neutron.hacking.checks.factory