[tox]
minversion = 4.2.5
envlist = py3,pep8
ignore_basepython_conflict = True

[testenv]
basepython = python3
usedevelop = True
setenv =
   VIRTUAL_ENV={envdir}
   OBSERVABILITY_CLIENT_EXEC_DIR={envdir}/bin
   OS_TEST_PATH = ./observabilityclient/tests/unit
passenv =
	PROMETHEUS_*
	OBSERVABILITY_*
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} --test-path {env:OS_TEST_PATH}

[testenv:pep8]
basepython = python3
deps = hacking>=7.0.0,<7.1.0
commands = flake8

[testenv:venv]
commands = {posargs}

[testenv:cover]
deps =
    {[testenv]deps}
    pytest-cov
commands = observabilityclient {posargs} {env:$OS_TEST_PATH}

[testenv:functional]
setenv =
    OS_TEST_PATH = ./observabilityclient/tests/functional
    OS_TESTENV_NAME = {envname}
allowlist_externals =
    bash
deps =
    {[testenv]deps}
    pytest
commands =
    bash tools/fix_ca_bundle.sh
    stestr run --slowest {posargs} --test-path {env:OS_TEST_PATH}

[flake8]
show-source = True
# A002 argument "input" is shadowing a python builtin
# A003 class attribute "list" is shadowing a python builtin
# D100 Missing docstring in public module
# D101 Missing docstring in public class
# D102 Missing docstring in public method
# D103 Missing docstring in public function
# D104 Missing docstring in public package
# D105 Missing docstring in magic method
# D106 Missing docstring in public nested class
# D107 Missing docstring in __init__
# W503 line break before binary operator
# W504 line break after binary operator
ignore = A002,A003,D100,D101,D102,D103,D104,D105,D106,D107,W503,W504
exclude = .venv,.git,.tox,dist,doc,*egg,build,*lib/python*
# [H101] Include your name with TODOs as in # TODO(yourname).
# [H104] Empty files should not contain license or comments
# [H106] Do not put vim configuration in source files.
# [H201] Do not write except:, use except Exception: at the very least.
# [H202] Testing for Exception being raised
# [H203] Use assertIs(Not)None to check for None.
# [H204] Use assert(Not)Equal to check for equality.
# [H205] Use assert(Greater|Less)(Equal) for comparison.
# [H23] Py3 compat
# [H301] Do not import more than one module per line (*)
# [H303] Do not use wildcard * import (*)
# [H304] Do not make relative imports
# [H306] Alphabetically order your imports by the full module path.
enable-extensions=G,H101,H104,H106,H201,H202,H203,H204,H205,H23,H301,H303,H304,H306
application-import-names = observabilityclient

[pytest]
addopts = --verbose
norecursedirs = .tox

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