# 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.
[tox]
envlist = pep8
skipsdist = True

[testenv]
setenv = VIRTUAL_ENV={envdir}
         PYTHONHASHSEED=0
whitelist_externals = juju
                      sleep
passenv = HOME TERM CS_API_* OS_* AMULET_*
install_command =
  pip install {opts} {packages}


[testenv:build]
basepython = python3
passenv=HTTP_PROXY HTTPS_PROXY NO_PROXY
setenv = CHARM_LAYERS_DIR = ../layers
         CHARM_INTERFACES_DIR = ../interfaces/
whitelist_externals = git
                      charm
                      rm
                      mv
commands =
    rm -rf release
    rm -rf ../interfaces/mongodb
    rm -rf ../interfaces/juju-relation-mysql
    rm -rf /tmp/canonical-osm
    git clone https://git.launchpad.net/interface-mongodb ../interfaces/mongodb
    git clone https://git.launchpad.net/canonical-osm/ /tmp/canonical-osm
    mv /tmp/canonical-osm/charms/interfaces/juju-relation-mysql ../interfaces/juju-relation-mysql
    charm build . --build-dir /tmp
    mv /tmp/ro-k8s/ release/

[testenv:lint]
basepython = python3
deps =
    black
    yamllint
    flake8
commands =
    black --check --diff . --exclude "release/|.tox/"
    yamllint .
    flake8 reactive/ --max-line-length=100

[testenv:pep8]
basepython = python3
deps=charm-tools
commands = charm-proof

[testenv:venv]
commands = {posargs}
