nova/tox.ini
Sachi King ad38ce1fc9 Add constraint target to tox.ini
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
2015-09-04 15:06:11 -07:00

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