#######################################################################################
# Copyright ETSI Contributors and Others.
#
# 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 = black, flake8

[tox:jenkins]
toxworkdir = /tmp/.tox
setenv = XDG_CACHE_HOME=/tmp/.cache

[testenv]
usedevelop = True
basepython = python3
setenv = VIRTUAL_ENV={envdir}
         PYTHONDONTWRITEBYTECODE = 1
deps =  -r{toxinidir}/requirements.txt
parallel_show_output = true


#######################################################################################
[testenv:black]
deps = black
skip_install = true
commands =
        black --check --diff src


#######################################################################################
[testenv:cover]
deps =  {[testenv]deps}
        -r{toxinidir}/requirements-dev.txt
        -r{toxinidir}/requirements-test.txt
allowlist_externals = sh
commands =
        sh -c 'rm -f nosetests.xml'
        coverage erase
        nose2 -C --coverage src -s src
        sh -c 'mv .coverage .coverage_mon'
        coverage report --omit='*tests*'
        coverage html -d ./cover --omit='*tests*'
        coverage xml -o coverage.xml --omit='*tests*'


#######################################################################################
[testenv:flake8]
deps =  flake8==5.0.4
        flake8-import-order
skip_install = true
commands =
        flake8 src/


#######################################################################################
[testenv:pylint]
deps =  {[testenv]deps}
        -r{toxinidir}/requirements-dev.txt
        -r{toxinidir}/requirements-test.txt
        pylint
skip_install = true
commands =
        pylint -E src


#######################################################################################
[testenv:safety]
setenv =
        LC_ALL=C.UTF-8
        LANG=C.UTF-8
deps =  {[testenv]deps}
        safety
commands =
        - safety check --full-report


#######################################################################################
[testenv:pip-compile]
deps =  pip-tools==6.6.2
skip_install = true
allowlist_externals =
        bash
        [
commands =
        bash -c "for file in requirements*.in ; do \
        UNSAFE="" ; \
        if [[ $file =~ 'dist' ]] ; then UNSAFE='--allow-unsafe' ; fi ; \
        pip-compile -rU --no-header $UNSAFE $file ;\
        out=`echo $file | sed 's/.in/.txt/'` ; \
        sed -i -e '1 e head -16 tox.ini' $out ;\
        done"


#######################################################################################
[testenv:dist]
deps =  {[testenv]deps}
        -r{toxinidir}/requirements-dist.txt

# In the commands, we copy the requirements.txt to be presented as a source file (.py)
# so it gets included in the .deb package for others to consume
commands =
        sh -c 'cp requirements.txt src/osm_ngsa/requirements.txt'
        sh -c 'cp README.rst src/osm_ngsa/README.rst'
        python3 setup.py --command-packages=stdeb.command sdist_dsc
        sh -c 'cd deb_dist/osm-ngsa*/ && dpkg-buildpackage -rfakeroot -uc -us'
        sh -c 'rm src/osm_ngsa/requirements.txt'
        sh -c 'rm src/osm_ngsa/README.rst'
allowlist_externals = sh


#######################################################################################
[flake8]
ignore =
        W291,
        W293,
        W503,
        W605,
        E123,
        E125,
        E203,
        E226,
        E241,
        E501,
exclude =
        .git,
        __pycache__,
        .tox,
max-line-length = 120
show-source = True
builtins = _
import-order-style = google
