nova/tox.ini
Davanum Srinivas ed0196ebb6 Get py34 subunit.run test discovery to work
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
2015-07-28 10:40:56 +00:00

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