# 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
install_command =
  pip install {opts} {packages}

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

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

[testenv:venv]
commands = {posargs}
