c6c0352982
This patch switches horizon from using JSCS to using ESlint. It adds the john papa style guides as an eslint plugin, and deactivates additional linting rules so current cleanup efforts can focus on the issues remaining from JSCS. Once that cleanup effort is complete, we can switch our linting job to voting and move forward from there. YAML for .eslintrc was chosen because the JSON specification does not allow comments, and having comments (including rule links) will make it easier to discuss linting changes. Deactivated eslint rules have each been annotated with a # TODO statement, so we can address them in the future. Links in the documentation have been updated to new contributor guidelines, which will be updated after this patch lands. Linting may be executed by first installing npm dependencies using `npm install`, and then executing `npm run lint` at any time in the future. No python venv is required. For clarification: We are switching to ESLint because JSCS explicitly focuses on code-style, not on language use errors. For that purpose, JSCS explicitly defers to JSHint, which due to the 'do no evil' license is not usable. Since ESLint provides both the codestyle functionality, and the language use checks, of both JSCS and JSHint, it was deemed the only viable tool, http://lists.openstack.org/pipermail/openstack-dev/2015-June/067030.html Change-Id: Ib4c3f77f8cc3cdaa3c7558b7bc3a6d1299b6dcbe Partially-Implements: blueprint jscs-cleanup
94 lines
3.0 KiB
INI
94 lines
3.0 KiB
INI
[tox]
|
|
envlist = py27,py27dj14,py27dj15,pep8,py33,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: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:py27dj14]
|
|
basepython = python2.7
|
|
commands = pip install django>=1.4,<1.5
|
|
/bin/bash run_tests.sh -N --no-pep8 {posargs}
|
|
|
|
[testenv:py27dj15]
|
|
basepython = python2.7
|
|
commands = pip install django>=1.5,<1.6
|
|
/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:jshint]
|
|
passenv = *
|
|
commands = nodeenv -p
|
|
npm install jshint -g
|
|
/bin/bash run_tests.sh -N --jshint
|
|
|
|
[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
|
|
|
|
[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,
|
|
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.datastructures.SortedDict,
|
|
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
|