summaryrefslogtreecommitdiff
path: root/tox.ini
blob: f53ce78057ab9765ca819284177dd4bce96c3410 (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
[tox]
minversion = 3.18.0
envlist = py3,functional,pep8
ignore_basepython_conflict=true

[testenv]
basepython = python3
usedevelop = True
setenv =
  VIRTUAL_ENV={envdir}
  PYTHONDONTWRITEBYTECODE = 1
  OS_TEST_PATH=./ironic_python_agent/tests/unit
  OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true}
  LANGUAGE=en_US
  LC_ALL=en_US.utf-8
deps =
  -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
  -r{toxinidir}/requirements.txt
  -r{toxinidir}/test-requirements.txt
commands = stestr run {posargs}
passenv =
    http_proxy
    HTTP_PROXY
    https_proxy
    HTTPS_PROXY
    no_proxy
    NO_PROXY

[testenv:functional]
# Define virtualenv directory, port to use for functional testing, and number
# of seconds to wait for the agent to come alive during functional testing.
setenv =
  VIRTUAL_ENV={envdir}
  PYTHONDONTWRITEBYTECODE = 1
  OS_TEST_PATH=./ironic_python_agent/tests/functional
  TEST_PORT=9999
  IPA_WAIT_TRIES=100
commands = stestr run {posargs}

[testenv:pep8]
deps =
    hacking~=6.0.0 # Apache-2.0
    bashate>=0.5.1 # Apache-2.0
    flake8-import-order>=0.17.1 # LGPLv3
    pycodestyle>=2.0.0,<3.0.0 # MIT
    doc8>=0.8.1 # Apache-2.0
allowlist_externals = bash
                      {toxinidir}/tools/run_bashate.sh
commands =
  flake8 {posargs:ironic_python_agent examples}
  # Run bashate during pep8 runs to ensure violations are caught by
  # the check and gate queues.
  {toxinidir}/tools/run_bashate.sh {toxinidir}
  doc8 doc/source README.rst examples/README.rst

[testenv:cover]
setenv = VIRTUAL_ENV={envdir}
         PYTHON=coverage run --source ironic_python_agent --omit='*tests*' --parallel-mode
commands =
  coverage erase
  stestr run {posargs}
  coverage combine
  coverage report --omit='*tests*'
  coverage html -d ./cover --omit='*tests*'

[testenv:venv]
setenv = PYTHONHASHSEED=0
commands = {posargs:}

[testenv:debug]
envdir = {toxworkdir}/venv
commands = oslo_debug_helper -t ironic_python_agent/tests/unit {posargs}

[testenv:docs]
setenv = PYTHONHASHSEED=0
sitepackages = False
# NOTE(dtantsur): documentation building process requires importing IPA
deps =
  -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
  -r{toxinidir}/requirements.txt
  -r{toxinidir}/doc/requirements.txt
commands =
  sphinx-build -b html doc/source doc/build/html

[testenv:pdf-docs]
allowlist_externals = make
setenv = PYTHONHASHSEED=0
sitepackages = False
deps = {[testenv:docs]deps}
commands =
  sphinx-build -b latex doc/source doc/build/pdf
  make -C doc/build/pdf

[testenv:releasenotes]
deps =
  -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
  -r{toxinidir}/doc/requirements.txt
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html

[flake8]
# [E129] visually indented line with same indent as next logical line.
# [W503] Line break before binary operator.
ignore = E129,W503
exclude = .venv,.git,.tox,dist,doc,*lib/python*,*egg,build,tools,imagebuild/tinyipa/tinyipafinal,imagebuild/tinyipa/tinyipabuild
import-order-style = pep8
application-import-names = ironic_python_agent
# [H106] Don't put vim configuration in source files.
# [H203] Use assertIs(Not)None to check for None.
# [H204] Use assert(Not)Equal to check for equality.
# [H205] Use assert(Greater|Less)(Equal) for comparison.
# [H210] Require 'autospec', 'spec', or 'spec_set' in mock.patch/mock.patch.object calls
# [H904] Delay string interpolations at logging calls.
enable-extensions=H106,H203,H204,H205,H210,H904

[hacking]
import_exceptions = ironic.openstack.common.gettextutils._,testtools.matchers

[testenv:checkconfig]
sitepackages = False
envdir = {toxworkdir}/venv
commands =
  {toxinidir}/tools/config/check_uptodate.sh

[testenv:genconfig]
sitepackages = False
envdir = {toxworkdir}/venv
allowlist_externals = mkdir
commands =
  mkdir -p etc/ironic_python_agent
  oslo-config-generator --config-file=tools/config/ipa-config-generator.conf

[testenv:bandit]
deps =
  -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
  -r{toxinidir}/test-requirements.txt
commands = bandit -r ironic_python_agent -x tests -n5 -ll -c tools/bandit.yml

[testenv:examples]
commands =
  pip install -e {toxinidir}/examples/business-logic
  pip install -e {toxinidir}/examples/vendor-device
  python -c 'import example_business_logic; import example_device'