# ==================================================================================
#       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 = py38,flake8,docs,docs-linkcheck
minversion = 2.0

[testenv]
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

# 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
    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
