Files
89b3b7795c9f8b7d731146c636b403f7efd25d00
nova /tox.ini

363 lines
11 KiB
INI
Raw Normal View History

[testenv]
find
rm
env
VIRTUAL_ENV={envdir}
LANGUAGE=en_US
LC_ALL=en_US.utf-8
OS_STDOUT_CAPTURE=1
OS_STDERR_CAPTURE=1
OS_TEST_TIMEOUT=160
SQLALCHEMY_WARN_20=1
-r{toxinidir}/test-requirements.txt
zvm
hyperv
vmware
GENERATE_HASHES
# NOTE(sean-k-mooney) optimization is enabled by default and when enabled
# asserts are complied out. Disable optimization to allow asserts in
# nova to fire in unit and functional tests. This can be useful for
# debugging issue with fixtures and mocks.
PYTHONOPTIMIZE
env TEST_OSPROFILER=1 stestr run --combine --no-discover 'nova.tests.unit.test_profiler'
Run functional tests.
# As nova functional tests import the PlacementFixture from the placement
# repository these tests are, by default, set up to run with openstack-placement
# from pypi. In the gate, Zuul will use the installed version of placement (stable
# branch version on stable gate run) OR the version of placement the Depends-On in
# the commit message suggests. If you want to run the tests with latest master from
# the placement repo, modify the dep line to point at master, example:
# deps =
# {[testenv]deps}
# git+https://opendev.org/openstack/placement#egg=openstack-placement
# If you want to run the test locally with an un-merged placement change,
# modify the dep line to point to your dependency or pip install placement
# into the appropriate tox virtualenv.
# NOTE: We express the requirement here instead of test-requirements
# because we do not want placement present during unit tests.
deps =
{[testenv]deps}
commands =
stestr --test-path=./nova/tests/functional run {posargs}
stestr slowest
[testenv:functional-without-sample-db-tests]
description =
Run functional tests by excluding the API|Notification
sample tests and DB tests. This env is used in
placement-nova-tox-functional-py38 job which is defined and
run in placement.
deps = {[testenv:functional]deps}
extras =
commands =
stestr --test-path=./nova/tests/functional run --exclude-regex '((?:api|notification)_sample_tests|functional\.db\.)' {posargs}
description =
Run type checks.
envdir = {toxworkdir}/shared
bash tools/mypywrap.sh {posargs}
Run style checks.
{[testenv]deps}
autopep8
# so we can gate on this in the ci
autopep8 --exit-code --max-line-length=79 --diff -r nova doc setup.py
# since autopep8 only tries to make minimal changes to conform to pep8 we still need to run
# our hacking and flake8 check to keep our existing code style consistent.
# The full list of issues addressable by autopep8 can be found here
# https://pypi.org/project/autopep8/#features
bash -c "! find doc/ -type f -name *.json | xargs grep -U -n $'\r'"
bash -c '! find doc/ -type f -name *.json | xargs -t -n1 python -m json.tool 2>&1 > /dev/null | grep -B1 -v ^python'
commands =
autopep8 --exit-code --max-line-length=79 --in-place -r nova doc setup.py
Run style checks on the changes made since HEAD~. For a full run including docs, use 'pep8'
bash tools/flake8wrap.sh -HEAD
description =
Determine whether a backport is ready to be merged by checking whether it has
already been merged to master or more recent stable branches.
deps =
commands =
bash tools/check-cherry-picks.sh
{[testenv]setenv}
GENERATE_SAMPLES=True
PYTHONHASHSEED=0
oslo-config-generator --config-file=etc/nova/nova-config-generator.conf
oslopolicy-sample-generator --config-file=etc/nova/nova-policy-generator.conf
# section once we rely on coverage 4.3+
#
# https://bitbucket.org/ned/coveragepy/issues/519/
{[testenv]setenv}
PYTHON=coverage run --source nova --parallel-mode
coverage erase
coverage html -d cover
coverage xml -o cover/coverage.xml
oslo_debug_helper {posargs}
{posargs}
# to install (test-)requirements.txt for docs.
whereto doc/build/html/.htaccess doc/test/redirect-tests.txt
description =
Build PDF documentation.
envdir = {toxworkdir}/docs
deps = {[testenv:docs]deps}
rm -rf doc/build/pdf
Generate release notes.
rm -rf releasenotes/build
description =
Build all documentation including API guides and refs.
envdir = {toxworkdir}/docs
{[testenv:docs]commands}
{[testenv:api-guide]commands}
{[testenv:api-ref]commands}
{[testenv:releasenotes]commands}
# NOTE(browne): This is required for the integration test job of the bandit
# project. Please do not remove.
# https://github.com/jcrocholl/pep8/issues/126. It's just wrong.
#
# Most of the whitespace related rules (E12* and E131) are excluded
# because while they are often useful guidelines, strict adherence to
# them ends up causing some really odd code formatting and forced
# extra line breaks. Updating code to enforce these will be a hard sell.
#
# H405 is another one that is good as a guideline, but sometimes
# multiline doc strings just don't have a natural summary
# line. Rejecting code for this reason is wrong.
#
# W504 skipped since you must choose either W503 or W504 (they conflict)
#
# to 25 and run 'tox -epep8'.
[hacking]
[flake8:local-plugins]
extension =
N307 = checks:import_no_db_in_virt
N309 = checks:no_db_session_in_public_api
N310 = checks:use_timeutils_utcnow
N311 = checks:import_no_virt_driver_import_deps
N312 = checks:import_no_virt_driver_config_deps
N313 = checks:capital_cfg_help
N316 = checks:assert_true_instance
N317 = checks:assert_equal_type
N335 = checks:assert_raises_regexp
N320 = checks:no_setting_conf_directly_in_tests
N322 = checks:no_mutable_default_args
N323 = checks:check_explicit_underscore_import
N324 = checks:use_jsonutils
N332 = checks:check_api_version_decorator
N326 = checks:CheckForTransAdd
N334 = checks:assert_true_or_false_with_in
N336 = checks:dict_constructor_with_list_copy
N338 = checks:assert_equal_in
N339 = checks:check_http_not_implemented
N340 = checks:check_greenthread_spawns
N341 = checks:check_no_contextlib_nested
N342 = checks:check_config_option_in_central_place
N350 = checks:check_policy_registration_in_central_place
N351 = checks:check_policy_enforce
N343 = checks:check_doubled_words
N348 = checks:no_os_popen
N352 = checks:no_log_warn
N349 = checks:CheckForUncalledTestClosure
N353 = checks:check_context_log
N355 = checks:no_assert_equal_true_false
N356 = checks:no_assert_true_false_is_not
N357 = checks:check_uuid4
N358 = checks:return_followed_by_space
N359 = checks:no_redundant_import_alias
N360 = checks:yield_followed_by_space
N361 = checks:assert_regexpmatches
N362 = checks:privsep_imports_not_aliased
N363 = checks:did_you_mean_tuple
N364 = checks:nonexistent_assertion_methods_and_attributes
N365 = checks:useless_assertion
N368 = checks:do_not_use_mock_class_as_new_mock_value
./nova/hacking
# Do not install any requirements. We want this to be fast and work even if
# system dependencies are missing, since it's used to tell you what system
# dependencies are missing! This also means that bindep must be installed
# separately, outside of the requirements files, and develop mode disabled
bindep test