#######################################################################################
# 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
setenv = VIRTUAL_ENV={envdir}
         PYTHONDONTWRITEBYTECODE = 1
passenv = HOME
deps =  -r{toxinidir}/requirements.txt


#######################################################################################
[testenv:black]
commands = python3 -c 'print("Skipping due to generated code")'


#######################################################################################
[testenv:cover]
deps =  {[testenv]deps}
        -r{toxinidir}/requirements-test.txt
commands =
        sh -c 'make clean'
        sh -c 'make models Q=""'
        sh -c 'rm -f nosetests.xml'
        coverage erase
        nose2 -C --coverage osm_im -s tests
        coverage report --omit='*tests*'
        coverage html -d ./cover --omit='*tests*'
        coverage xml -o coverage.xml --omit=*tests*
whitelist_externals = sh


#######################################################################################
[testenv:flake8]
commands = python3 -c 'print("Skipping due to generated code")'


#######################################################################################
[testenv:pylint]
commands = python3 -c 'print("Skipping due to generated code")'


#######################################################################################
[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==5.5.0
commands =
        - sh -c 'for file in requirements*.in ; do pip-compile -rU --no-header $file ;\
        out=`echo $file | sed "s/.in/.txt/"` ; \
        head -16 tox.ini >> $out ;\
        done'
whitelist_externals = sh


#######################################################################################
[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 'make clean'
        sh -c 'make Q=""'
        sh -c 'cp requirements.txt osm_im/requirements.txt'
        python3 setup.py --command-packages=stdeb.command sdist_dsc
        sh -c 'cd deb_dist/osm-im*/ && dpkg-buildpackage -rfakeroot -uc -us'
        sh -c 'rm osm_im/requirements.txt'
whitelist_externals = sh

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