# ==================================================================================
#       Copyright (c) 2019-2020 Nokia
#       Copyright (c) 2018-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.
# ==================================================================================

# Code

[tox]
envlist = code,flake8,docs,docs-linkcheck
minversion = 2.0

[pytest]
testpaths = tests

[testenv:code]
basepython = python3.8
deps=
    pytest
    coverage
    pytest-cov
setenv =
    LD_LIBRARY_PATH = /usr/local/lib/:/usr/local/lib64
    A1_RMR_RETRY_TIMES = 2
    INSTANCE_DELETE_NO_RESP_TTL = 3
    INSTANCE_DELETE_RESP_TTL = 3
    prometheus_multiproc_dir = /tmp

# Note, before this will work, for the first time on that machine, run ./install_deps.sh
commands =
# sometimes the -s flag is helpful; add -s after pytest; which streams the logs as they come in, rather than saving them all for the end of tests
    pytest --cov a1 --cov-report xml --cov-report term-missing --cov-report html --cov-fail-under=70 --junitxml=/tmp/tests.xml
    coverage xml -i

[testenv:flake8]
basepython = python3.8
skip_install = true
deps = flake8
commands = flake8 setup.py a1 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'

# Docs

# verbatim as asked for by the docs instructions: https://wiki.o-ran-sc.org/display/DOC/Configure+Repo+for+Documentation
[testenv:docs]
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"
whitelist_externals = echo

[testenv:docs-linkcheck]
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
