# Global tox file

# This file is used to invoke tox in individual charms

[tox]
skipsdist = True
envlist = pep8,py3
sitepackages = False
skip_missing_interpreters = False
minversion = 3.18.0

[testenv]
passenv =
  HOME
allowlist_externals =
  {toxinidir}/run_tox.sh
  {toxinidir}/generate_token.sh
  {toxinidir}/repository.py

[testenv:fetch]
basepython = python3
deps = pyyaml
commands =
  python3 {toxinidir}/repository.py -v fetch-lib {posargs}

[testenv:fmt]
description = Apply coding style standards to code
deps =
    black
    isort
    pyyaml
commands =
  {toxinidir}/run_tox.sh fmt

[testenv:pep8]
description = Alias for lint
deps =
    black
    flake8
    flake8-docstrings
    flake8-copyright
    flake8-builtins
    pyproject-flake8
    pep8-naming
    isort
    codespell
    pyyaml
commands =
  {toxinidir}/run_tox.sh pep8

[testenv:py3]
deps =
  -r{toxinidir}/test-requirements.txt
  pyyaml
commands =
  {toxinidir}/run_tox.sh py3 {posargs}

[testenv:py310]
deps = {[testenv:py3]deps}
commands =
  {toxinidir}/run_tox.sh py310 {posargs}

[testenv:py312]
deps = {[testenv:py3]deps}
commands =
  {toxinidir}/run_tox.sh py312 {posargs}

[testenv:cover]
deps = {[testenv:py3]deps}
commands =
  {toxinidir}/run_tox.sh cover {posargs}

[testenv:linters]
deps =
  {[testenv:py3]deps}
  mypy
commands =
  {toxinidir}/run_tox.sh linters

[testenv:build]
basepython = python3
deps = pyyaml
commands =
  {toxinidir}/run_tox.sh build {posargs}

[testenv:func-noop]
basepython = python3
deps =
  git+https://github.com/openstack-charmers/zaza.git#egg=zaza
  git+https://github.com/openstack-charmers/zaza-openstack-tests.git#egg=zaza.openstack
  git+https://opendev.org/openstack/tempest.git#egg=tempest
  # Pin httpx version due to bug https://github.com/gtsystem/lightkube/issues/78
  httpx>=0.24.0,<0.28.0
  lightkube
commands =
  functest-run-suite --help

[testenv:func]
basepython = python3
deps = {[testenv:func-noop]deps}
passenv =
  HOME
  PYTHONPATH
setenv =
  # Set TEST_JUJU3 To unpin juju<3 in zaza
  TEST_JUJU3 = 1
  TEST_MODEL_SETTINGS = automatically-retry-hooks=true
  TEST_MAX_RESOLVE_COUNT = 5
  PYTHONPATH = {toxinidir}/tests/local:{env:PYTHONPATH}
commands =
  python3 render_bundles.py
  # Example: functest-run-suite --keep-model --smoke --test-directory=tests/set1
  functest-run-suite --keep-model {posargs}

[testenv:generate-token]
basepython = python3
deps =
  zuul-client
commands =
  {toxinidir}/generate_token.sh