[tox]
minversion = 1.6
envlist = linters
skipsdist = True

[testenv]
basepython = python3
usedevelop = True
install_command = pip install {opts} {packages}

[testenv:linters]
deps =
  hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0
  bashate>=0.2 # Apache-2.0
  PyYAML>=3.10.0 # MIT
  ansible
  openstacksdk
  testtools
  mock
whitelist_externals = bash
setenv =
  ANSIBLE_LIBRARY= {toxinidir}/tools/fake-ansible/library
commands =
  flake8
  {toxinidir}/tools/run-bashate.sh
  python3 {toxinidir}/tools/sorted_modules_env.py {toxinidir}/modules.env
  python3 {toxinidir}/tools/irc_checks.py
  python3 {toxinidir}/tools/check_clouds_yaml.py
  # The following command validates that inventory/base/hosts.yaml
  # parses, but doesn't do anything.
  bash -c "ANSIBLE_INVENTORY_PLUGINS=./playbooks/roles/install-ansible/files/inventory_plugins ansible -i ./inventory/base/hosts.yaml not_a_host -a 'true'"
  python3 -m unittest playbooks/roles/install-ansible/files/inventory_plugins/test_yamlgroup.py

[testenv:docs]
deps = -r{toxinidir}/doc/requirements.txt
commands = sphinx-build -W -E -b html doc/source doc/build/html

[testenv:testinfra]
deps =
  ansible-base # see install-ansible/tasks/main.yaml
  pytest-html # MPL-2.0
  pytest-testinfra>=6.0.0
  selenium
  requests

# This environment assumes a gate-hosts.yaml file has been written.
passenv =
  TESTINFRA_EXTRA_DATA
commands = py.test \
           --junit-xml junit.xml -o junit_family=xunit1 \
           --html=test-results.html --self-contained-html \
           --connection=ansible \
           --ansible-inventory=/home/zuul/src/opendev.org/opendev/system-config/inventory/base/gate-hosts.yaml -v testinfra {posargs}

[flake8]
show-source = True
exclude = .tox,.eggs
ignore = E125,H
select = H231