#######################################################################################
# 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, cover, flake8, pylint, safety

[tox:jenkins]
toxworkdir = /tmp/.tox

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

#######################################################################################
[testenv:black]
deps = black==24.1.1
skip_install = true
commands =
        black --check --diff osmclient/


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


#######################################################################################
[testenv:flake8]
deps = flake8==7.0.0
commands =
        flake8 osmclient/ setup.py


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


#######################################################################################
[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.13.0
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 --resolver=backtracking -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 osmclient/requirements.txt'
        python3 setup.py --command-packages=stdeb.command sdist_dsc
        sh -c 'cd deb_dist/osmclient*/ && dpkg-buildpackage -rfakeroot -uc -us'
        sh -c 'rm osmclient/requirements.txt'
allowlist_externals = sh

#######################################################################################
[flake8]
ignore =
        W291,
        W293,
        W503,
        E123,
        E125,
        E226,
        E241,
        E203
exclude =
        .git,
        __pycache__,
        .tox,
max-line-length = 128
show-source = True
builtins = _

