#   Copyright (c) 2020 AT&T Intellectual Property.
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#          http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
# ==================================================================================
[tox]
envlist = code,flake8,docs,docs-linkcheck
minversion = 2.0

[testenv:code]
basepython = python3.7
deps=
    pytest
    coverage
    pytest-cov

setenv =
    LD_LIBRARY_PATH = /usr/local/lib/:/usr/local/lib64
    PYTHONPATH = {toxinidir}:ad:/usr/lib/python3.7/site-packages/
    RMR_SEED_RT = tests/fixtures/test_local.rt
    RMR_ASYNC_CONN = 0
    USE_FAKE_SDL = 1

commands =
    pytest -v --cov ad --cov-report xml --cov-report term-missing --cov-report html --cov-fail-under=70
    coverage xml -i

[testenv:flake8]
basepython = python3.7
skip_install = true
deps = flake8
setenv =
    PYTHONPATH = {toxinidir}:ad:/usr/lib/python3.7/site-packages/
commands = flake8 setup.py ad tests

[flake8]
extend-ignore = E501,E741,E731

[testenv:clm]
# use pip to gather dependencies with versions for CLM analysis
whitelist_externals = sh
commands = sh -c 'pip freeze > requirements.txt'

# doc jobs
[testenv:docs]
whitelist_externals = echo
skipsdist = true
basepython = python3.7
deps =
    sphinx
    sphinx-rtd-theme
    sphinxcontrib-httpdomain
    recommonmark
    lfdocs-conf
commands =
    sphinx-build -W -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html
    echo "Generated docs available in {toxinidir}/docs/_build/html"

[testenv:docs-linkcheck]
skipsdist = true
basepython = python3.7
deps = sphinx
       sphinx-rtd-theme
       sphinxcontrib-httpdomain
       recommonmark
       lfdocs-conf
commands = sphinx-build -W -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck
