
Currently the tox py34 target uses testtools.run to run a subset of our test harness. We need to be able to use pretty_tox.sh just like py27 as we make progress with py34 support. The first step is to make sure we can discover all the tests using: python -m subunit.run discover -t . ./nova/tests/ --list So, we need to fix a bunch of things for the discovery to work including updating to a new version of websockify. In the xen code, we should keep the original import and add except for py34 as xen uses an older python that does not work with six.moves. Depends-On: Ib4ef2e79b28b7180e564b3d6dc2188456c66c08a Change-Id: I88b6746da6136a7386a173f6cacd42f0b470deee
195 lines
8.1 KiB
INI
195 lines
8.1 KiB
INI
[tox]
|
|
minversion = 1.6
|
|
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
|
|
install_command = 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.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 =
|
|
# TODO(sdague) this is a brute force work around for pip not respecting test-requirements.txt
|
|
pip install "sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2"
|
|
{posargs}
|
|
|
|
[testenv:docs]
|
|
commands =
|
|
# TODO(sdague) this is a brute force work around for pip not respecting test-requirements.txt
|
|
pip install "sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2"
|
|
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'
|
|
|
|
[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
|