[tox]
minversion = 2.0
skipsdist = True
envlist = py35,py34,py27,pep8,samples

[testenv]
extras = {env:RALLY_EXTRAS:}
setenv = VIRTUAL_ENV={envdir}
         HOME={homedir}
         LANG=en_US.UTF-8
         LANGUAGE=en_US:en
         LC_ALL=C
         PYTHONHASHSEED=0
         TOX_ENV_NAME={envname}
whitelist_externals = find
                      rm
                      make
deps = -r{toxinidir}/requirements.txt
       -r{toxinidir}/test-requirements.txt
install_command = pip install -c ./upper-constraints.txt -U {opts} {packages}
usedevelop = True
commands =
  find . -type f -name "*.pyc" -delete
  python {toxinidir}/tests/ci/pytest_launcher.py tests/unit --posargs={posargs}
distribute = false
basepython = python2.7
passenv = PYTEST_REPORT http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY

[testenv:pep8]
commands = flake8
distribute = false


[testenv:py34]
basepython = python3.4


[testenv:py35]
basepython = python3.5


[testenv:py36]
basepython = python3.6


[testenv:py37]
basepython = python3.7


[testenv:venv]
commands = {posargs}

[testenv:debug]
commands = oslo_debug_helper -t tests {posargs}

[testenv:debug34]
basepython = python3.4
commands = oslo_debug_helper -t tests {posargs}

[testenv:debug35]
basepython = python3.5
commands = oslo_debug_helper -t tests {posargs}

[testenv:cli]
commands =
  find . -type f -name "*.pyc" -delete
  echo "do nothing"

[testenv:functional]
basepython = python2.7
commands =
  find . -type f -name "*.pyc" -delete
  python {toxinidir}/tests/ci/pytest_launcher.py tests/functional --posargs={posargs}

[testenv:functional-py3]
basepython = python3
commands =
  find . -type f -name "*.pyc" -delete
  python {toxinidir}/tests/ci/pytest_launcher.py tests/functional --posargs={posargs}

[testenv:cover]
commands = {toxinidir}/tests/ci/cover.sh {posargs}

[testenv:docs]
deps =
  -c{toxinidir}/upper-constraints.txt
  -r{toxinidir}/requirements.txt
  -r{toxinidir}/test-requirements.txt
  -r{toxinidir}/doc/requirements.txt
commands =
  rm -rf doc/build
  sphinx-build -b html doc/source doc/build/html

[testenv:genconfig]
commands =
    oslo-config-generator --config-file etc/rally/rally-config-generator.conf

[testenv:requirements]
deps = requests[security]
commands = python {toxinidir}/tests/ci/sync_requirements.py {posargs}

[flake8]
# E731 do not assign a lambda expression, use a def
# W503 line break before binary operator
ignore = H703,H105,E731,W503
show-source = true
exclude=.venv,.git,.tox,dist,*lib/python*,*egg,tools,build,setup.py

[hacking]
import_exceptions = rally.common.i18n
local-check-factory = tests.hacking.checks.factory

[testenv:bindep]
# Do not install any requirements. We want this to be fast and work even if
# system dependencies are missing, since it's used to tell you what system
# dependencies are missing! This also means that bindep must be installed
# separately, outside of the requirements files.
deps = bindep
commands = bindep

[testenv:self]
commands = {toxinidir}/tests/ci/rally_self_job.sh {toxinidir}/rally-jobs/self-rally.yaml
