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

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

[testenv:build]
passenv=HTTP_PROXY HTTPS_PROXY NO_PROXY
whitelist_externals =
  charmcraft
  rm
  unzip
commands =
  rm -rf release grafana.charm
  charmcraft build
  unzip grafana.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
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/*