horizon/tox.ini

131 lines
5.2 KiB
INI
Raw Normal View History

[tox]
envlist = py27,py27dj17,py27dj18,pep8,py34
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
commands = /bin/bash run_tests.sh -N --no-pep8 {posargs}
[testenv:py34]
commands =
python manage.py test --settings=horizon.test.settings \
horizon.test.tests.base \
horizon.test.tests.forms \
horizon.test.tests.messages \
horizon.test.tests.middleware \
horizon.test.tests.tables.DataTableViewTests \
horizon.test.tests.templatetags \
horizon.test.tests.test_file_discovery \
horizon.test.tests.utils.FiltersTests \
horizon.test.tests.utils.GetPageSizeTests \
horizon.test.tests.utils.MemoizedTests \
horizon.test.tests.utils.TimeSinceNeverFilterTests \
horizon.test.tests.utils.ValidatorsTests \
horizon.test.tests.views
python manage.py test --settings=openstack_dashboard.test.settings \
openstack_dashboard.dashboards.project.access_and_security.api_access.tests \
openstack_dashboard.dashboards.project.images.images.tests.CreateImageFormTests \
openstack_dashboard.dashboards.project.images.tests.ImagesAndSnapshotsUtilsTests \
openstack_dashboard.dashboards.project.stacks.tests.TemplateFormTests \
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_tests \
openstack_dashboard.test.api_tests.config_rest_tests \
openstack_dashboard.test.api_tests.fwaas_tests \
openstack_dashboard.test.api_tests.keystone_tests \
openstack_dashboard.test.api_tests.lbaas_tests \
openstack_dashboard.test.api_tests.neutron_rest_tests.NeutronPortsTestCase \
openstack_dashboard.test.api_tests.nova_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.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}
[testenv:py27dj17]
basepython = python2.7
commands = pip install django>=1.7,<1.8
/bin/bash run_tests.sh -N --no-pep8 {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}
2015-06-16 17:27:59 +00:00
[testenv:eslint]
passenv = *
commands = nodeenv -p
2015-06-16 17:27:59 +00:00
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
[tox:jenkins]
downloadcache = ~/cache/pip
[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]
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,
Allow translators to translate BatchActions Currently BatchAction proposes only an action_present and action_past verb to be concatenated with a data_type_singular or data_type_plural string. The issue is that many languages need to conjugate the verb with the plural/singular subject, and some translations where terribly awfull and impossible to do. Indeed, some languages have up to 5 plural forms depending on the number of items. This patch introduces the fact that action_present is a method instead of an attribute, which in conjonction with https://review.openstack.org/57701 allows better translation to be performed. This patch also adds contextual mrkers to STATUS_DISPLAY_CHOICES, TASK_DISPLAY_CHOICES and POWER_DISPLAY_CHOICES because it was impossible to translate the stand-alone words out of context for a translator (i.e. the word "active" will be translated differently if the active object is feminine or masculine, since feminine and masculine depends also on the language, it is mission impossible for the translator to translate "active" if he does not know "what" is "active"). It is important to use unicode strings with contextual markers because of the following django bug: https://code.djangoproject.com/ticket/22565 The django community was very quick and responsive and fixed the bug very fast: https://code.djangoproject.com/changeset/142c27218a0bb07bb197faab7b1d8eb3a084f5b9 and back-ported their fix in the 1.6 and 1.7 django branches: https://code.djangoproject.com/changeset/61fd00d4fd65f44d0a05be4c7e95124e4102ec27 https://code.djangoproject.com/changeset/034866204b39f797c73997b03cd90443aa03aa91 but since in horizon we support back to django 1.4, we will have to live with it by providing unicode strings until we drop support of old django versions. We can't introduce contextual markers and ungettext (pluralization) verywhere at once because Translators would totally loose their previous work. So we have to progressively introduce contextual markers and pluralization, when a string is changed, or for new strings. It is also the reason why this patch changes only the strings of the instance view actions. Since we can't use contextual markers and pluralization for all the code at once, this patch partially: partial-bug: 1307476 Change-Id: I4cef42dc4a12f55cf750d9a18083254c6a96e716
2014-04-30 11:35:49 +00:00
django.utils.translation.npgettext_lazy,
django.utils.translation.pgettext_lazy,
django.utils.translation.ugettext_lazy,
django.utils.translation.ungettext_lazy,
operator.attrgetter,
StringIO.StringIO