[tox]
minversion = 3.18.0
skipsdist = True
envlist = docs,linters,functional
ignore_basepython_conflict = True

[testenv]
basepython = python3
usedevelop = False
install_command =
    pip install -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} {opts} {packages}
commands =
    /usr/bin/find . -type f -name "*.pyc" -delete
passenv =
    COMMON_TESTS_PATH
    HOME
    http_proxy
    HTTP_PROXY
    https_proxy
    HTTPS_PROXY
    no_proxy
    NO_PROXY
    TESTING_BRANCH
    TESTING_HOME
    USER
allowlist_externals =
    bash
setenv =
    PYTHONUNBUFFERED=1
    ROLE_NAME=os_heat
    TEST_IDEMPOTENCE=false
    VIRTUAL_ENV={envdir}
    WORKING_DIR={toxinidir}

[testenv:docs]
deps = -r{toxinidir}/doc/requirements.txt
commands =
    bash -c "rm -rf doc/build"
    doc8 doc
    sphinx-build -W --keep-going -b html doc/source doc/build/html

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

[doc8]
# Settings for doc8:
extensions = .rst

[testenv:releasenotes]
deps = -r{toxinidir}/doc/requirements.txt
commands =
    sphinx-build -a -E -W -d releasenotes/build/doctrees --keep-going -b html releasenotes/source releasenotes/build/html

# environment used by the -infra templated docs job
[testenv:venv]
commands =
    {posargs}

[testenv:pep8]
commands =
    bash -c "{toxinidir}/tests/common/test-pep8.sh"

[flake8]
# Ignores the following rules due to how ansible modules work in general
#     F403 'from ansible.module_utils.basic import *' used;
#          unable to detect undefined names
ignore=F403

[testenv:bashate]
commands =
    bash -c "{toxinidir}/tests/common/test-bashate.sh"

[testenv:ansible-syntax]
commands =
    bash -c "{toxinidir}/tests/common/test-ansible-syntax.sh"

[testenv:ansible-lint]
commands =
    bash -c "{toxinidir}/tests/common/test-ansible-lint.sh"

[testenv:functional]
commands =
    bash -c "{toxinidir}/tests/common/test-ansible-functional.sh"

[testenv:distro_install]
setenv =
    {[testenv]setenv}
    ANSIBLE_PARAMETERS=-e @{toxinidir}/tests/common/test-distro_install-vars.yml
commands =
    bash -c "{toxinidir}/tests/common/test-ansible-functional.sh"

[testenv:linters]
commands =
    bash -c "{toxinidir}/tests/common/test-ansible-env-prep.sh"
    {[testenv:pep8]commands}
    {[testenv:bashate]commands}
    {[testenv:ansible-lint]commands}
    {[testenv:ansible-syntax]commands}