[tox]
minversion = 4.0.2
envlist = py3,pep8,cover
skipsdist = True

[testenv]
usedevelop = True
setenv = VIRTUAL_ENV={envdir}
deps =
  -r{toxinidir}/test-requirements.txt
  -r{toxinidir}/requirements.txt
  git+https://github.com/cloudbase/python-coriolisclient.git
commands = stestr run --slowest --exclude-regex coriolis.tests.integration {posargs}

[testenv:pep8]
commands = flake8 {posargs}

[testenv:cover]
setenv =
  {[testenv]setenv}
  PYTHON=coverage run --source coriolis --parallel-mode
commands =
  stestr run --no-subunit-trace --exclude-regex coriolis.tests.integration {posargs}
  coverage combine
  coverage report --fail-under=82 --skip-covered
  coverage html -d cover
  coverage xml -o cover/coverage.xml

[testenv:integration]
# Must be run as root: sudo -E tox -e integration
# Requires the scsi_debug kernel module: modinfo scsi_debug
# Requires kernel version 5.11 or newer (scsi_debug: per_host_store=1 parameter)
#
# To test with an external provider, set CORIOLIS_PROVIDER_PACKAGE to a local
# path or pip-compatible specifier (git+file://, git+https://, etc.) and run:
#   sudo -E CORIOLIS_PROVIDER_PACKAGE=/path/to/provider tox -e integration
setenv =
  {[testenv]setenv}
  PBR_VERSION = 0.0.1
passenv =
  CORIOLIS_*
deps =
  {[testenv]deps}
  git+https://github.com/cloudbase/python-coriolisclient.git
  {env:CORIOLIS_PROVIDER_PACKAGE:}
commands = stestr run --slowest --concurrency=1 --test-path coriolis/tests/integration/ {posargs}

[testenv:venv]
commands = {posargs}

[coverage:run]
source = coriolis
omit = coriolis/tests/*

[flake8]
# E125 is deliberately excluded. See https://github.com/jcrocholl/pep8/issues/126
# E251 Skipped due to https://github.com/jcrocholl/pep8/issues/301

ignore = E125,E251,W503,W504,E305,E731,E117,W605,F632,H401,H403,H404,H405,H202
exclude =  .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools
