# Copyright 2020 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]
skipsdist = True
envlist = unit, lint
sitepackages = False
skip_missing_interpreters = False

[testenv]
basepython = python3
setenv =
  PYTHONHASHSEED=0
  PYTHONPATH = {toxinidir}/src
  CHARM_NAME = mon

[testenv:build]
passenv=HTTP_PROXY HTTPS_PROXY NO_PROXY
whitelist_externals =
  charmcraft
  rm
  unzip
commands =
  rm -rf release mon.charm
  charmcraft build
  unzip mon.charm -d release

[testenv:unit]
commands =
  coverage erase
  stestr run --slowest --test-path=./tests --top-dir=./
  coverage combine
  coverage html -d cover
  coverage xml -o cover/coverage.xml
  coverage report
deps =
  coverage
  stestr
  mock
  ops
  pydantic
setenv =
  {[testenv]setenv}
  PYTHON=coverage run

[testenv:lint]
deps =
  black
  yamllint
  flake8
commands =
  black --check --diff . --exclude "build/|.tox/|mod/|lib/"
  yamllint .
  flake8 . --max-line-length=100 --ignore="E501,W503,W504,F722" --exclude "build/ .tox/ mod/ lib/"

[coverage:run]
branch = True
concurrency = multiprocessing
parallel = True
source =
  .
omit =  
  .tox/*
  tests/*
