[tox]
minversion = 3.18.0
envlist = py3,pep8

[testenv]
usedevelop = True
deps =
  -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
  -r{toxinidir}/requirements.txt
  -r{toxinidir}/test-requirements.txt
commands =
  stestr run --slowest {posargs}

[testenv:integration]
allowlist_externals = bash
commands =
  bash integration-test/test.sh {posargs}

[testenv:cover]
setenv =
  PYTHON=coverage run --source hacking --parallel-mode
commands =
  stestr run {posargs}
  coverage combine
  coverage html -d cover
  coverage xml -o cover/coverage.xml

[testenv:docs]
deps =
  -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
  -r{toxinidir}/doc/requirements.txt
commands =
  sphinx-build -W -b html doc/source doc/build/html

[testenv:pdf-docs]
allowlist_externals = make
deps = {[testenv:docs]deps}
commands =
   sphinx-build -W -b latex doc/source doc/build/pdf
   make -C doc/build/pdf

[testenv:releasenotes]
deps =
  {[testenv:docs]deps}
commands =
  sphinx-build -W -b html releasenotes/source releasenotes/build/html

[testenv:venv]
commands = {posargs}

[testenv:pep8]
description =
  Run style checks.
deps =
  {[testenv]deps}
  {[testenv:mypy]deps}
commands =
  flake8 {posargs}

[testenv:mypy]
description =
  Run type checks.
deps =
  {[testenv]deps}
  mypy
commands =
  mypy --cache-dir="{envdir}/mypy_cache" {posargs:hacking}

[flake8]
exclude = .venv,.tox,dist,doc,*.egg,build
show-source = true
enable-extensions = H106

[hacking]
local-check = hacking.tests.test_local.check
