117 lines
3.4 KiB
INI
Raw Normal View History

[tox]
minversion = 2.3.2
envlist = py35,py27,pep8
skipsdist = True
[testenv]
usedevelop = True
passenv = TRACE_FAILONLY
install_command = pip install {opts} {packages}
setenv =
PYTHONWARNINGS=default::DeprecationWarning
OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true}
OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:true}
OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:true}
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands =
stestr run {posargs}
[testenv:pep8]
basepython = python3
Generate API report tooling NB: The code here is not pretty and could use some love. However there's many more pressing things to do, so perhaps this can be revisited later need be (as we agreed during the neutron-lib meeting [3]). This patch adds a python and bash script to our tools that can be run during tox/gate to generate python public API reports as discussed during out neutron lib meeting [2][3]. The idea is that this tool can be run to generate a public API report that we can use to release note our neutron-lib releases [3]. There are 2 main approaches for extracting an API from python source; (a) loading the source an using inspect based modules to reflect the API and (b) reading the source without loading it and parsing API signatures from raw source text. In addition a hybrid approach can be taken with uses a combination of This script uses preprocessing and inspection to permit python source to be loaded (without its dependencies) and inspected. The inspected source's public signatures are collected and stored in a JSON format that defines the public API for the inspected source. JSON API reports can also be compared to determine what public APIs have changed, added, removed or stayed the same. The high level approach for generating an API is as follows: - Copy the source directory tree to a temp staging location. - Replace all imports in the staging source with mock imports so that modules can be loaded without dependencies. - Walk the source, dynamically loading modules and inspecting them. - Build a representation of the inspection including public signatures. This include public functions, methods, and variables. Only simple/scalar variable (module or class attrs) values are tracked at present. - Format the representation into a JSON format that can be saved to a file and later used for comparison. For a sample of the current output, see [1]. This patch also adds a standalone tox target called 'api-report' that can be used to generate a new API report against the current change. Note that tox target explicitly specifies the neutron-lib version to do the api diff against and thus will need updating per neutron-lib release. [1] http://paste.openstack.org/show/526626/ [2] http://goo.gl/9Xpi4K [3] http://goo.gl/LlAjX7 Change-Id: If31ae832f86ff146bd8fb53b6d4a5aa9b8217f72
2016-07-06 15:51:51 -06:00
commands =
flake8
{toxinidir}/tools/check_samples.sh
{[testenv:bandit]commands}
[testenv:releasenotes]
basepython = python3
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/doc/requirements.txt
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[testenv:venv]
basepython = python3
commands = {posargs}
[testenv:cover]
basepython = python3
setenv =
{[testenv]setenv}
PYTHON=coverage run --source neutron_lib --parallel-mode
commands =
stestr run --no-subunit-trace {posargs}
coverage combine
coverage html -d cover
coverage xml -o cover/coverage.xml
[testenv:docs]
basepython = python3
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/doc/requirements.txt
commands = sphinx-build -W -b html doc/source doc/build/html
[testenv:api-ref]
basepython = python3
whitelist_externals = rm
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/doc/requirements.txt
commands =
rm -rf api-ref/build
sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html
[testenv:linkcheck]
basepython = python3
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/doc/requirements.txt
whitelist_externals = rm
commands =
rm -rf api-ref/build
sphinx-build -W -b linkcheck api-ref/source api-ref/build/linkcheck
rm -rf doc/build
sphinx-build -W -b linkcheck doc/source doc/build/linkcheck
[testenv:debug]
basepython = python3
commands = oslo_debug_helper -t neutron_lib/tests/unit {posargs}
Generate API report tooling NB: The code here is not pretty and could use some love. However there's many more pressing things to do, so perhaps this can be revisited later need be (as we agreed during the neutron-lib meeting [3]). This patch adds a python and bash script to our tools that can be run during tox/gate to generate python public API reports as discussed during out neutron lib meeting [2][3]. The idea is that this tool can be run to generate a public API report that we can use to release note our neutron-lib releases [3]. There are 2 main approaches for extracting an API from python source; (a) loading the source an using inspect based modules to reflect the API and (b) reading the source without loading it and parsing API signatures from raw source text. In addition a hybrid approach can be taken with uses a combination of This script uses preprocessing and inspection to permit python source to be loaded (without its dependencies) and inspected. The inspected source's public signatures are collected and stored in a JSON format that defines the public API for the inspected source. JSON API reports can also be compared to determine what public APIs have changed, added, removed or stayed the same. The high level approach for generating an API is as follows: - Copy the source directory tree to a temp staging location. - Replace all imports in the staging source with mock imports so that modules can be loaded without dependencies. - Walk the source, dynamically loading modules and inspecting them. - Build a representation of the inspection including public signatures. This include public functions, methods, and variables. Only simple/scalar variable (module or class attrs) values are tracked at present. - Format the representation into a JSON format that can be saved to a file and later used for comparison. For a sample of the current output, see [1]. This patch also adds a standalone tox target called 'api-report' that can be used to generate a new API report against the current change. Note that tox target explicitly specifies the neutron-lib version to do the api diff against and thus will need updating per neutron-lib release. [1] http://paste.openstack.org/show/526626/ [2] http://goo.gl/9Xpi4K [3] http://goo.gl/LlAjX7 Change-Id: If31ae832f86ff146bd8fb53b6d4a5aa9b8217f72
2016-07-06 15:51:51 -06:00
[testenv:api-report]
basepython = python3
Generate API report tooling NB: The code here is not pretty and could use some love. However there's many more pressing things to do, so perhaps this can be revisited later need be (as we agreed during the neutron-lib meeting [3]). This patch adds a python and bash script to our tools that can be run during tox/gate to generate python public API reports as discussed during out neutron lib meeting [2][3]. The idea is that this tool can be run to generate a public API report that we can use to release note our neutron-lib releases [3]. There are 2 main approaches for extracting an API from python source; (a) loading the source an using inspect based modules to reflect the API and (b) reading the source without loading it and parsing API signatures from raw source text. In addition a hybrid approach can be taken with uses a combination of This script uses preprocessing and inspection to permit python source to be loaded (without its dependencies) and inspected. The inspected source's public signatures are collected and stored in a JSON format that defines the public API for the inspected source. JSON API reports can also be compared to determine what public APIs have changed, added, removed or stayed the same. The high level approach for generating an API is as follows: - Copy the source directory tree to a temp staging location. - Replace all imports in the staging source with mock imports so that modules can be loaded without dependencies. - Walk the source, dynamically loading modules and inspecting them. - Build a representation of the inspection including public signatures. This include public functions, methods, and variables. Only simple/scalar variable (module or class attrs) values are tracked at present. - Format the representation into a JSON format that can be saved to a file and later used for comparison. For a sample of the current output, see [1]. This patch also adds a standalone tox target called 'api-report' that can be used to generate a new API report against the current change. Note that tox target explicitly specifies the neutron-lib version to do the api diff against and thus will need updating per neutron-lib release. [1] http://paste.openstack.org/show/526626/ [2] http://goo.gl/9Xpi4K [3] http://goo.gl/LlAjX7 Change-Id: If31ae832f86ff146bd8fb53b6d4a5aa9b8217f72
2016-07-06 15:51:51 -06:00
commands =
{toxinidir}/tools/api_report.sh
[flake8]
# H904: Delay string interpolations at logging calls
enable-extensions=H904
show-source = True
Generate API report tooling NB: The code here is not pretty and could use some love. However there's many more pressing things to do, so perhaps this can be revisited later need be (as we agreed during the neutron-lib meeting [3]). This patch adds a python and bash script to our tools that can be run during tox/gate to generate python public API reports as discussed during out neutron lib meeting [2][3]. The idea is that this tool can be run to generate a public API report that we can use to release note our neutron-lib releases [3]. There are 2 main approaches for extracting an API from python source; (a) loading the source an using inspect based modules to reflect the API and (b) reading the source without loading it and parsing API signatures from raw source text. In addition a hybrid approach can be taken with uses a combination of This script uses preprocessing and inspection to permit python source to be loaded (without its dependencies) and inspected. The inspected source's public signatures are collected and stored in a JSON format that defines the public API for the inspected source. JSON API reports can also be compared to determine what public APIs have changed, added, removed or stayed the same. The high level approach for generating an API is as follows: - Copy the source directory tree to a temp staging location. - Replace all imports in the staging source with mock imports so that modules can be loaded without dependencies. - Walk the source, dynamically loading modules and inspecting them. - Build a representation of the inspection including public signatures. This include public functions, methods, and variables. Only simple/scalar variable (module or class attrs) values are tracked at present. - Format the representation into a JSON format that can be saved to a file and later used for comparison. For a sample of the current output, see [1]. This patch also adds a standalone tox target called 'api-report' that can be used to generate a new API report against the current change. Note that tox target explicitly specifies the neutron-lib version to do the api diff against and thus will need updating per neutron-lib release. [1] http://paste.openstack.org/show/526626/ [2] http://goo.gl/9Xpi4K [3] http://goo.gl/LlAjX7 Change-Id: If31ae832f86ff146bd8fb53b6d4a5aa9b8217f72
2016-07-06 15:51:51 -06:00
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,tools
import-order-style = pep8
[testenv:bandit]
# B104: Possible binding to all interfaces
# B303: Blacklist use of insecure MD2, MD4, MD5, or SHA1 hash functions
rehome rpc and related plumbing As shown in the history of this patch, along with the work in [1], we've discussed rehoming neutron.common.rpc into lib a number of times before. One of the main reasons we've decided not to rehome in the past is that we'd hoped the neutron.common.rcp.BackingOffClient and related plumbing could be put into oslo.messaging. However, it's 2 years later and that still hasn't happened [2][3]. This patch proposes we just move forward with the rehome so that we can begin to untangle the consumers [4]. There's no reason we can't reiterate on this code in lib; it's no more difficult than in neutron. This patch includes rehoming of: - neutron.common.rpc, the only difference in the lib version is that we dynamically add all neutron_lib.exceptions by default (_DFT_EXMODS). - neutron.common.exceptions, but exceptions are broken out into their respective exception modules rather than lumping all together in a generic single module. - The fake notifier and RPC fixture, without any real changes. - A new runtime util method to dynamically load all modules for a package. For a sample neutron consumption patch see [5] that was tested with PS10 herein. [1] https://review.openstack.org/#/q/project:openstack/neutron-lib+message:rpc [2] https://review.openstack.org/#/c/407722/ [3] https://bugs.launchpad.net/oslo.messaging/+bug/1667445 [4] http://codesearch.openstack.org/?q=from%20neutron.common%20import%20rpc [5] https://review.openstack.org/#/c/579989/ Change-Id: I0052ba65973a993e088943056879bc6e982bd0b5
2018-04-09 14:33:58 -06:00
# B311: Standard pseudo-random generators are not suitable for security/cryptographic purpose
deps = -r{toxinidir}/test-requirements.txt
commands = bandit -r neutron_lib -x tests -n5 -s B104,B303,B311
[hacking]
import_exceptions = neutron_lib._i18n
2016-12-07 14:11:33 -07:00
local-check-factory = neutron_lib.hacking.checks._neutron_lib_factory
[testenv:lower-constraints]
basepython = python3
deps =
-c{toxinidir}/lower-constraints.txt
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt