Add tox tests for osm charms in devops
[osm/devops.git] / installers / charm / keystone / tox.ini
index cff5193..781f74e 100644 (file)
@@ -1,47 +1,82 @@
 # 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
+# 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
+#         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.
+# 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 = pep8
 skipsdist = True
+envlist = unit, lint
+sitepackages = False
+skip_missing_interpreters = False
 
 [testenv]
-setenv = VIRTUAL_ENV={envdir}
-         PYTHONHASHSEED=0
-install_command =
-  pip install {opts} {packages}
+basepython = python3.8
+setenv =
+  PYTHONHASHSEED=0
+  PYTHONPATH = {toxinidir}/src
+  CHARM_NAME = keystone
 
 [testenv:build]
-basepython = python3
 passenv=HTTP_PROXY HTTPS_PROXY NO_PROXY
-whitelist_externals = charmcraft
-                      rm
-                      unzip
+whitelist_externals =
+  charmcraft
+  rm
+  unzip
 commands =
-    rm -rf release
-    charmcraft build
-    unzip keystone.charm -d release
+  rm -rf release keystone.charm
+  charmcraft build
+  unzip keystone.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
+  -rrequirements.txt
+setenv =
+  {[testenv]setenv}
+  PYTHON=coverage run
 
 [testenv:lint]
-basepython = python3
 deps =
-    black
-    yamllint
-    flake8
+  black
+  yamllint
+  flake8
 commands =
-    black --check --diff . --exclude "build/|.tox/|mod/|lib/"
-    yamllint .
-    flake8 . --max-line-length=100 --exclude "build/ .tox/ mod/ lib/"
+  black --check --diff . --exclude "build/|.tox/|mod/|lib/|release/"
+  yamllint .
+  flake8 . --max-line-length=100 --ignore="E501,W503,W504,F722" --exclude "build/ .tox/ mod/ lib/ release/"
 
-[testenv:venv]
-commands = {posargs}
+[coverage:run]
+branch = True
+concurrency = multiprocessing
+parallel = True
+source =
+  .
+omit =  
+  .tox/*
+  tests/*