# Copyright 2021 Canonical Ltd.
#
# 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.
#
# For those usages not covered by the Apache License, Version 2.0 please
# contact: legal@canonical.com
#
# To get in touch with the maintainers, please contact:
# osm-charmers@lists.launchpad.net
##
#######################################################################################

[tox]
envlist = flake8, cover, pylint, safety, yamllint
skipsdist = True

[testenv]
basepython = python3.8
setenv =
  VIRTUAL_ENV={envdir}
  PYTHONHASHSEED=0
  PYTHONPATH = {toxinidir}/src
deps =  -r{toxinidir}/requirements.txt

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

#######################################################################################
[testenv:safety]
setenv =
        LC_ALL=C.UTF-8
        LANG=C.UTF-8
deps =  {[testenv]deps}
        -r{toxinidir}/requirements-test.txt
commands =
        - safety check --full-report

#######################################################################################
[testenv:flake8]
deps = flake8
commands =
        flake8 src/ tests/

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

#######################################################################################
[testenv:black]
deps =  {[testenv]deps}
        -r{toxinidir}/requirements-test.txt
        black
commands =  black --check --diff . --exclude "build/|.tox/|mod/|lib/"

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

#######################################################################################
[testenv:build]
passenv=HTTP_PROXY HTTPS_PROXY NO_PROXY
deps =  {[testenv]deps}
        -r{toxinidir}/requirements-test.txt
        charmcraft
whitelist_externals =
  charmcraft
  cp
commands =
  charmcraft build
  cp -r build release

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

