# Copyright 2018 Telefonica S.A.
#
# 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
deps =  -r{toxinidir}/requirements.txt

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


#######################################################################################
[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 osm_nbi -s osm_nbi/tests
        coverage report --omit='*tests*'
        coverage html -d ./cover --omit='*tests*'
        coverage xml -o coverage.xml --omit=*tests*
whitelist_externals = sh


#######################################################################################
[testenv:flake8]
deps = flake8
commands =
        - flake8 osm_nbi/ setup.py


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


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

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