[tox]
envlist = py27,py33,pep8
minversion = 1.6
skipsdist = True

[testenv]
# Note the hash seed is set to 0 until neutron can be tested with a
# random hash seed successfully.
setenv = VIRTUAL_ENV={envdir}
         PYTHONHASHSEED=0
usedevelop = True
install_command = pip install -U {opts} {packages}
deps = -r{toxinidir}/requirements.txt
       -r{toxinidir}/test-requirements.txt
commands =
  python setup.py testr --slowest --testr-args='{posargs}'

[testenv:hashtest]
# This is the same as default environment, but with a random PYTHONHASHSEED.
# You can also specify a specific hashseed (for test repeatability) as follows:
#   tox --hashseed 1235130571 -e hashtest
setenv = VIRTUAL_ENV={envdir}

[testenv:functional]
setenv = OS_TEST_PATH=./gbpservice/tests/functional
commands =
  python setup.py testr --slowest --testr-args='{posargs}'

[testenv:dsvm-functional]
setenv = OS_TEST_PATH=./gbpservice/tests/functional
         OS_SUDO_TESTING=1
         OS_ROOTWRAP_CMD=sudo /usr/local/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
         OS_FAIL_ON_MISSING_DEPS=1
sitepackages=True
commands =
  python setup.py testr --slowest --testr-args='{posargs}'

[tox:jenkins]
sitepackages = True
downloadcache = ~/cache/pip

[testenv:pep8]
commands =
  flake8
  gbp-db-manage check_migration

[testenv:i18n]
commands =
  python ./tools/check_i18n.py ./neutron ./tools/i18n_cfg.py

[testenv:cover]
commands =
  coverage erase
  python setup.py testr --coverage --coverage-package-name gbpservice --testr-args='{posargs}'
  coverage combine
  coverage html --include='gbpservice/*' -d covhtml -i

[testenv:venv]
commands = {posargs}

[testenv:docs]
commands = python setup.py build_sphinx

[flake8]
# E125 continuation line does not distinguish itself from next logical line
# E126 continuation line over-indented for hanging indent
# E128 continuation line under-indented for visual indent
# E129 visually indented line with same indent as next logical line
# E251 unexpected spaces around keyword / parameter equals
# E265 block comment should start with ‘# ‘
# E713 test for membership should be ‘not in’
# F402 import module shadowed by loop variable
# F811 redefinition of unused variable
# F812 list comprehension redefines name from line
# H104 file contains nothing but comments
# H237 module is removed in Python 3
# H305 imports not grouped correctly
# H307 like imports should be grouped together
# H401 docstring should not start with a space
# H402 one line docstring needs punctuation
# H405 multi line docstring summary not separated with an empty line
# H904 Wrap long lines in parentheses instead of a backslash
# TODO(marun) H404 multi line docstring should start with a summary
ignore = E125,E126,E128,E129,E251,E265,E713,F402,F811,F812,H104,H237,H305,H307,H401,H402,H404,H405,H904
show-source = true
builtins = _
exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools,.ropeproject,rally-scenarios

[hacking]
import_exceptions = neutron.openstack.common.gettextutils
local-check-factory = neutron.hacking.checks.factory
