horizon/tox.ini
Timur Sufiev 7023050edd Eliminate mutable default arguments
The best practice in Python is not to use mutable object (i.e. list,
dictionary, or instances of most classes) as value of default
argument (see https://goo.gl/Kwhg0T). A hacking rule to enforce this 
practice is added as well.

The patch was inspired by CR https://review.openstack.org/#/c/198465/ 
and took most of its code from it as well. That's why original 
copyrights are kept.

Closes-Bug: #1471349
Change-Id: Ia77b1736dbc3d4e28ff2d2c3424e9cfcaefa5077
2015-12-17 09:58:46 +00:00

136 lines
5.9 KiB
INI

[tox]
envlist = py27,py27dj18,pep8,py34,releasenotes
minversion = 1.6
skipsdist = True
[testenv]
usedevelop = True
install_command = pip install -U {opts} {packages}
setenv = VIRTUAL_ENV={envdir}
NOSE_WITH_OPENSTACK=1
NOSE_OPENSTACK_COLOR=1
NOSE_OPENSTACK_RED=0.05
NOSE_OPENSTACK_YELLOW=0.025
NOSE_OPENSTACK_SHOW_ELAPSED=1
# Note the hash seed is set to 0 until horizon can be tested with a
# random hash seed successfully.
PYTHONHASHSEED=0
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
whitelist_externals = /bin/bash
commands = /bin/bash run_tests.sh -N --no-pep8 {posargs}
[testenv:py34]
commands =
python manage.py test --settings=horizon.test.settings horizon.test.tests
python manage.py test --settings=openstack_dashboard.test.settings \
--exclude-dir=openstack_dashboard/test/integration_tests \
openstack_dashboard.dashboards.admin.aggregates \
openstack_dashboard.dashboards.admin.metering \
openstack_dashboard.dashboards.admin.routers \
openstack_dashboard.dashboards.admin.volumes.volumes.tests \
openstack_dashboard.dashboards.identity.users \
openstack_dashboard.dashboards.project.access_and_security.api_access.tests \
openstack_dashboard.dashboards.project.images \
openstack_dashboard.dashboards.project.instances \
openstack_dashboard.dashboards.project.network_topology \
openstack_dashboard.dashboards.project.networks.tests \
openstack_dashboard.dashboards.project.overview.tests \
openstack_dashboard.dashboards.project.stacks \
openstack_dashboard.dashboards.settings.password \
openstack_dashboard.test.api_tests.base_tests.APIDictWrapperTests \
openstack_dashboard.test.api_tests.base_tests.APIResourceWrapperTests \
openstack_dashboard.test.api_tests.base_tests.ApiHelperTests \
openstack_dashboard.test.api_tests.base_tests.ApiVersionTests \
openstack_dashboard.test.api_tests.base_tests.QuotaSetTests \
openstack_dashboard.test.api_tests.ceilometer_tests \
openstack_dashboard.test.api_tests.cinder_rest_tests \
openstack_dashboard.test.api_tests.cinder_tests \
openstack_dashboard.test.api_tests.config_rest_tests \
openstack_dashboard.test.api_tests.fwaas_tests \
openstack_dashboard.test.api_tests.glance_rest_tests \
openstack_dashboard.test.api_tests.glance_tests \
openstack_dashboard.test.api_tests.heat_rest_tests \
openstack_dashboard.test.api_tests.heat_tests \
openstack_dashboard.test.api_tests.keystone_rest_tests \
openstack_dashboard.test.api_tests.keystone_tests \
openstack_dashboard.test.api_tests.lbaas_tests \
openstack_dashboard.test.api_tests.network_rest_tests \
openstack_dashboard.test.api_tests.neutron_rest_tests \
openstack_dashboard.test.api_tests.neutron_rest_tests.NeutronPortsTestCase \
openstack_dashboard.test.api_tests.nova_rest_tests \
openstack_dashboard.test.api_tests.nova_tests \
openstack_dashboard.test.api_tests.policy_rest_tests \
openstack_dashboard.test.api_tests.rest_util_tests \
openstack_dashboard.test.test_plugins.panel_group_tests.PanelGroupPluginTests \
openstack_dashboard.test.test_plugins.panel_tests.PanelPluginTests \
openstack_dashboard.test.tests.error_pages \
openstack_dashboard.test.tests.policy \
openstack_dashboard.test.tests.policy_backend \
openstack_dashboard.test.tests.quotas \
openstack_dashboard.test.tests.utils
[testenv:pep8]
commands =
/bin/bash run_tests.sh -N --pep8
/bin/bash run_tests.sh -N --makemessages --check-only
[testenv:venv]
commands = {posargs}
[testenv:cover]
commands = /bin/bash run_tests.sh -N --no-pep8 --coverage {posargs}
# Django-1.8 is LTS
[testenv:py27dj18]
basepython = python2.7
commands = pip install django>=1.8,<1.9
/bin/bash run_tests.sh -N --no-pep8 {posargs}
[testenv:py27integration]
basepython = python2.7
commands = /bin/bash run_tests.sh -N --integration --selenium-headless {posargs}
[testenv:eslint]
passenv = *
commands = nodeenv -p
npm install
/bin/bash run_tests.sh -N --eslint
[testenv:docs]
setenv = DJANGO_SETTINGS_MODULE=openstack_dashboard.test.settings
commands = python setup.py build_sphinx
[testenv:releasenotes]
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[flake8]
exclude = .venv,.git,.tox,dist,*openstack/common*,*lib/python*,*egg,build,panel_template,dash_template,local_settings.py,*/local/*,*/test/test_plugins/*,.ropeproject
# H405 multi line docstring summary not separated with an empty line
ignore = H405
max-complexity = 20
[hacking]
local-check-factory = horizon.hacking.checks.factory
import_exceptions = collections.defaultdict,
collections.OrderedDict,
django.conf.settings,
django.conf.urls.include,
django.conf.urls.patterns,
django.conf.urls.url,
django.core.urlresolvers.reverse,
django.core.urlresolvers.reverse_lazy,
django.template.loader.render_to_string,
django.test.utils.override_settings,
django.utils.encoding.force_text,
django.utils.html.conditional_escape,
django.utils.html.escape,
django.utils.http.urlencode,
django.utils.safestring.mark_safe,
django.utils.translation.npgettext_lazy,
django.utils.translation.pgettext_lazy,
django.utils.translation.ugettext_lazy,
django.utils.translation.ungettext_lazy,
operator.attrgetter,
StringIO.StringIO