horizon/tox.ini
Jack Choy 989e10e7a5 Allow Chrome to start when tox is running npm
Chrome in *nix environments requires the HOME and DISPLAY variables
to be set for Chrome to start properlyi when running the 'npm' rule.
The HOME variable is needed so Chrome can load up the user's
preferences.  The DISPLAY variable is needed so it know what display
to launch Chrome into.

Change-Id: I84f4d1d47f065158e8f5bf5691c241061cc16aab
Closes-Bug: #1684321
2017-04-24 14:39:39 -07:00

126 lines
3.5 KiB
INI

[tox]
envlist = pep8,py27dj{18,19,110},py35,releasenotes,npm
minversion = 2.3.2
skipsdist = True
[testenv]
install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages}
setenv =
VIRTUAL_ENV={envdir}
INTEGRATION_TESTS=0
NOSE_WITH_OPENSTACK=1
NOSE_OPENSTACK_SHOW_ELAPSED=1
whitelist_externals =
bash
deps =
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands =
docs: sphinx-build -W -b html doc/source doc/build/html
horizon: {envpython} {toxinidir}/manage.py test --settings=horizon.test.settings {posargs}
manage: {envpython} {toxinidir}/manage.py {posargs}
py27: {[unit_tests]commands}
py27dj18: {[unit_tests]commands}
py35: {[unit_tests]commands}
openstack_dashboard: {envpython} {toxinidir}/manage.py test --settings=openstack_dashboard.test.settings {posargs}
releasenotes: sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
runserver: {envpython} {toxinidir}/manage.py runserver {posargs}
venv: {posargs}
[testenv:py35]
setenv =
PYTHONUNBUFFERED = 1
{[testenv]setenv}
commands = {[unit_tests]commands}
[testenv:py27dj19]
commands =
pip install -U django>=1.9,<1.10
{[unit_tests]commands}
[testenv:py27dj110]
commands =
pip install -U django>=1.10,<1.11
{[unit_tests]commands}
[unit_tests]
commands = bash {toxinidir}/tools/unit_tests.sh {envpython} {toxinidir} {posargs}
[testenv:pep8]
usedevelop = True
commands =
{envpython} {toxinidir}/manage.py extract_messages --verbosity 0 --check-only
flake8
[testenv:cover]
commands =
coverage erase
coverage run {toxinidir}/manage.py test horizon --settings=horizon.test.settings {posargs}
coverage run -a {toxinidir}/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings --exclude-dir=openstack_dashboard/test/integration_tests {posargs}
coverage xml
coverage html
[testenv:selenium]
setenv =
{[testenv]setenv}
WITH_SELENIUM=1
SKIP_UNITTESTS=1
commands = {[unit_tests]commands}
[testenv:selenium-headless]
setenv =
{[testenv]setenv}
SELENIUM_HEADLESS=1
WITH_SELENIUM=1
SKIP_UNITTESTS=1
commands = {[unit_tests]commands}
[testenv:selenium-phantomjs]
setenv =
{[testenv]setenv}
SELENIUM_PHANTOMJS=1
WITH_SELENIUM=1
SKIP_UNITTESTS=1
commands = {[unit_tests]commands}
[testenv:py27integration]
# Run integration tests only
passenv = AVCONV_INSTALLED
setenv =
PYTHONHASHSEED=0
INTEGRATION_TESTS=1
SELENIUM_HEADLESS=1
NOSE_WITH_OPENSTACK=1
NOSE_OPENSTACK_SHOW_ELAPSED=1
basepython = python2.7
commands = nosetests openstack_dashboard.test.integration_tests {posargs}
[testenv:npm]
passenv =
HOME
DISPLAY
commands =
nodeenv -p
npm install
npm run {posargs:test}
[testenv:tests_system_packages]
# Provide an environment for system packagers that dont want anything from pip
# Any extra deps needed for this env can be passed by setting TOX_EXTRA_DEPS
sitepackages = True
passenv = TOX_EXTRA_DEPS
# Sets deps to an empty list so nothing is installed from pip
deps =
commands =
pip install -U {env:TOX_EXTRA_DEPS:}
{[unit_tests]commands}
[flake8]
exclude = .venv,.git,.tox,dist,*lib/python*,*egg,build,panel_template,dash_template,local_settings.py,*/local/*,*/test/test_plugins/*,.ropeproject,node_modules
# H405 multi line docstring summary not separated with an empty line
ignore = H405
max-complexity = 20
[hacking]
local-check-factory = horizon.hacking.checks.factory