ad38ce1fc9
This adds a pip install command to tox.ini that is only used when the tox env is passed with the 'constraints' factor appended onto it. As such this will not effect developer workflows or current unit tests. The initial use of this will be in a non-voting job, to verify that the constrained checks with tox are stable. DevStack is already running constrained jobs, as such problems are no expected. To run a tox with pip using constraints on a developer system a developer should run the desired tox environment with -constraints. For example: $(tox -epy27-constraints) Pip will pull the current version of the upper-constraints.txt file down from the git.openstack.org, however this method can be overriden to use a local file setting the environment variable "UPPER_CONSTRAINTS_FILE" to the local path or a different URL, it is passed directly to pip. This is currently not enabled in the default tox run, however it is possible to enable it as a default by adding it to 'envlist' in tox.ini Depends-On: I17ac389f78af241917b6da7f049085f2b13d30f2 Change-Id: I8ea1710a4e3a287405978b467e0b2dfbb025b795 Implements Blueprint: Requirements-Management
196 lines
8.2 KiB
INI
196 lines
8.2 KiB
INI
[tox]
|
|
minversion = 1.8
|
|
envlist = py34,py27,functional,pep8,pip-missing-reqs
|
|
skipsdist = True
|
|
|
|
[testenv]
|
|
usedevelop = True
|
|
# tox is silly... these need to be separated by a newline....
|
|
whitelist_externals = bash
|
|
find
|
|
rm
|
|
install_command =
|
|
constraints: pip install -U --force-reinstall -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages}
|
|
pip install -U --force-reinstall {opts} {packages}
|
|
setenv = VIRTUAL_ENV={envdir}
|
|
OS_TEST_PATH=./nova/tests/unit
|
|
LANGUAGE=en_US
|
|
LC_ALL=en_US.utf-8
|
|
deps = -r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
commands =
|
|
find . -type f -name "*.pyc" -delete
|
|
bash tools/pretty_tox.sh '{posargs}'
|
|
passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY
|
|
# there is also secret magic in pretty_tox.sh which lets you run in a fail only
|
|
# mode. To do this define the TRACE_FAILONLY environmental variable.
|
|
|
|
[tox:jenkins]
|
|
downloadcache = ~/cache/pip
|
|
|
|
[testenv:pep8]
|
|
commands =
|
|
bash tools/flake8wrap.sh {posargs}
|
|
|
|
[testenv:py34]
|
|
setenv = {[testenv]setenv}
|
|
deps = -r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
commands =
|
|
find . -type f -name "*.pyc" -delete
|
|
python -m subunit.run discover -t . ./nova/tests/ --list
|
|
python -m testtools.run \
|
|
nova.tests.unit.api.openstack.test_api_version_request \
|
|
nova.tests.unit.compute.test_keypairs \
|
|
nova.tests.unit.db.test_db_api \
|
|
nova.tests.unit.scheduler.filters.test_affinity_filters \
|
|
nova.tests.unit.scheduler.filters.test_aggregate_image_properties_isolation_filters \
|
|
nova.tests.unit.scheduler.filters.test_aggregate_instance_extra_specs_filters \
|
|
nova.tests.unit.scheduler.filters.test_aggregate_multitenancy_isolation_filters \
|
|
nova.tests.unit.scheduler.filters.test_availability_zone_filters \
|
|
nova.tests.unit.scheduler.filters.test_compute_capabilities_filters \
|
|
nova.tests.unit.scheduler.filters.test_compute_filters \
|
|
nova.tests.unit.scheduler.filters.test_core_filters \
|
|
nova.tests.unit.scheduler.filters.test_disk_filters \
|
|
nova.tests.unit.scheduler.filters.test_exact_core_filter \
|
|
nova.tests.unit.scheduler.filters.test_exact_disk_filter \
|
|
nova.tests.unit.scheduler.filters.test_exact_ram_filter \
|
|
nova.tests.unit.scheduler.filters.test_extra_specs_ops \
|
|
nova.tests.unit.scheduler.filters.test_image_props_filters \
|
|
nova.tests.unit.scheduler.filters.test_io_ops_filters \
|
|
nova.tests.unit.scheduler.filters.test_isolated_hosts_filter \
|
|
nova.tests.unit.scheduler.filters.test_json_filters \
|
|
nova.tests.unit.scheduler.filters.test_metrics_filters \
|
|
nova.tests.unit.scheduler.filters.test_num_instances_filters \
|
|
nova.tests.unit.scheduler.filters.test_numa_topology_filters \
|
|
nova.tests.unit.scheduler.filters.test_pci_passthrough_filters \
|
|
nova.tests.unit.scheduler.filters.test_ram_filters \
|
|
nova.tests.unit.scheduler.filters.test_retry_filters \
|
|
nova.tests.unit.scheduler.filters.test_trusted_filters \
|
|
nova.tests.unit.scheduler.filters.test_type_filters \
|
|
nova.tests.unit.scheduler.filters.test_utils \
|
|
nova.tests.unit.scheduler.test_caching_scheduler \
|
|
nova.tests.unit.scheduler.test_chance_scheduler \
|
|
nova.tests.unit.scheduler.test_client \
|
|
nova.tests.unit.scheduler.test_filter_scheduler \
|
|
nova.tests.unit.scheduler.test_filters \
|
|
nova.tests.unit.scheduler.test_host_filters \
|
|
nova.tests.unit.scheduler.test_host_manager \
|
|
nova.tests.unit.scheduler.test_ironic_host_manager \
|
|
nova.tests.unit.scheduler.test_rpcapi \
|
|
nova.tests.unit.scheduler.test_scheduler \
|
|
nova.tests.unit.scheduler.test_scheduler_options \
|
|
nova.tests.unit.scheduler.test_scheduler_utils \
|
|
nova.tests.unit.scheduler.weights.test_weights_hosts \
|
|
nova.tests.unit.scheduler.weights.test_weights_ioopsweight \
|
|
nova.tests.unit.scheduler.weights.test_weights_metrics \
|
|
nova.tests.unit.scheduler.weights.test_weights_ram \
|
|
nova.tests.unit.objects.test_agent \
|
|
nova.tests.unit.objects.test_aggregate \
|
|
nova.tests.unit.objects.test_bandwidth_usage \
|
|
nova.tests.unit.objects.test_block_device \
|
|
nova.tests.unit.objects.test_cell_mapping \
|
|
nova.tests.unit.objects.test_compute_node \
|
|
nova.tests.unit.objects.test_dns_domain \
|
|
nova.tests.unit.objects.test_ec2 \
|
|
nova.tests.unit.objects.test_external_event \
|
|
nova.tests.unit.objects.test_fields \
|
|
nova.tests.unit.objects.test_fixed_ip \
|
|
nova.tests.unit.objects.test_flavor \
|
|
nova.tests.unit.objects.test_floating_ip \
|
|
nova.tests.unit.objects.test_hv_spec \
|
|
nova.tests.unit.objects.test_instance \
|
|
nova.tests.unit.objects.test_instance_action \
|
|
nova.tests.unit.objects.test_instance_fault \
|
|
nova.tests.unit.objects.test_instance_group \
|
|
nova.tests.unit.objects.test_instance_info_cache \
|
|
nova.tests.unit.objects.test_instance_mapping \
|
|
nova.tests.unit.objects.test_instance_numa_topology \
|
|
nova.tests.unit.objects.test_instance_pci_requests \
|
|
nova.tests.unit.objects.test_keypair \
|
|
nova.tests.unit.objects.test_migration \
|
|
nova.tests.unit.objects.test_network \
|
|
nova.tests.unit.objects.test_network_request \
|
|
nova.tests.unit.objects.test_numa \
|
|
nova.tests.unit.objects.test_objects \
|
|
nova.tests.unit.objects.test_pci_device \
|
|
nova.tests.unit.objects.test_pci_device_pool \
|
|
nova.tests.unit.objects.test_quotas \
|
|
nova.tests.unit.objects.test_security_group \
|
|
nova.tests.unit.objects.test_security_group_rule \
|
|
nova.tests.unit.objects.test_service \
|
|
nova.tests.unit.objects.test_tag \
|
|
nova.tests.unit.objects.test_vcpu_model \
|
|
nova.tests.unit.objects.test_virt_cpu_topology \
|
|
nova.tests.unit.objects.test_virtual_interface \
|
|
nova.tests.unit.test_crypto \
|
|
nova.tests.unit.test_exception \
|
|
nova.tests.unit.test_utils \
|
|
nova.tests.unit.test_versions
|
|
|
|
[testenv:functional]
|
|
usedevelop = True
|
|
install_command = pip install -U --force-reinstall {opts} {packages}
|
|
setenv = VIRTUAL_ENV={envdir}
|
|
OS_TEST_PATH=./nova/tests/functional
|
|
LANGUAGE=en_US
|
|
deps = -r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
commands =
|
|
find . -type f -name "*.pyc" -delete
|
|
bash tools/pretty_tox.sh '{posargs}'
|
|
|
|
[testenv:genconfig]
|
|
commands = oslo-config-generator --config-file=etc/nova/nova-config-generator.conf
|
|
|
|
[testenv:cover]
|
|
# Also do not run test_coverage_ext tests while gathering coverage as those
|
|
# tests conflict with coverage.
|
|
commands =
|
|
coverage erase
|
|
python setup.py testr --coverage \
|
|
--testr-args='{posargs}'
|
|
coverage combine
|
|
coverage html --include='nova/*' --omit='nova/openstack/common/*' -d covhtml -i
|
|
|
|
[testenv:venv]
|
|
commands = {posargs}
|
|
|
|
[testenv:docs]
|
|
commands =
|
|
rm -rf doc/source/api doc/build
|
|
python setup.py build_sphinx
|
|
bash -c '! find doc/ -type f -name *.json | xargs -t -n1 python -m json.tool 2>&1 > /dev/null | grep -B1 -v ^python'
|
|
oslo-config-generator --config-file=etc/nova/nova-config-generator.conf
|
|
|
|
[testenv:bandit]
|
|
deps = -r{toxinidir}/test-requirements.txt
|
|
commands = bandit -c bandit.yaml -r nova -n 5 -ll
|
|
|
|
[flake8]
|
|
# E125 is deliberately excluded. See https://github.com/jcrocholl/pep8/issues/126
|
|
# The rest of the ignores are TODOs
|
|
# New from hacking 0.9: E129, E131, H407, H405
|
|
# E251 Skipped due to https://github.com/jcrocholl/pep8/issues/301
|
|
|
|
ignore = E121,E122,E123,E124,E125,E126,E127,E128,E129,E131,E251,H405
|
|
exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools/xenserver*
|
|
# To get a list of functions that are more complex than 25, set max-complexity
|
|
# to 25 and run 'tox -epep8'.
|
|
# 34 is currently the most complex thing we have
|
|
# TODO(jogo): get this number down to 25 or so
|
|
max-complexity=35
|
|
|
|
[hacking]
|
|
local-check-factory = nova.hacking.checks.factory
|
|
import_exceptions = nova.i18n
|
|
|
|
[testenv:pip-missing-reqs]
|
|
# do not install test-requirements as that will pollute the virtualenv for
|
|
# determining missing packages
|
|
# this also means that pip-missing-reqs must be installed separately, outside
|
|
# of the requirements.txt files
|
|
deps = pip_missing_reqs
|
|
-rrequirements.txt
|
|
commands=pip-missing-reqs -d --ignore-file=nova/tests/* --ignore-file=nova/test.py nova
|