Added tox environment for gathering coverage

This technique was borrowed from the tox "cover" environment in
openstack/nova's tox.ini.  This leverages the fact that stestr lets
you override the python executable via the PYTHON environment
variable.  Doing this allows us to easily generate coverage for our
unit tests.

An important caveat is that this does not provide any coverage for
tests via zaza, amulet, etc.  It is purely focused on the unit tests.

Note that this replaces the previous .coveragerc; coverage
configuration is instead pulled from tox.ini.

Change-Id: I20a4f267abb05f2123000518ae9b8ec8d5f0961c
This commit is contained in:
Paul Goins 2019-02-25 17:34:29 +01:00
parent 1a07a7e657
commit a24f45e06d
4 changed files with 29 additions and 7 deletions

View File

@ -1,7 +0,0 @@
[report]
# Regexes for lines to exclude from consideration
exclude_lines =
if __name__ == .__main__.:
include=
hooks/keystone_*
actions/actions.py

View File

@ -1,3 +1,4 @@
- project:
templates:
- python35-charm-jobs
- openstack-cover-jobs

View File

@ -5,3 +5,4 @@ flake8>=2.2.4,<=2.4.1
os-testr>=0.4.1
python-keystoneclient>=1.7.1
git+https://github.com/openstack-charmers/zaza.git#egg=zaza;python_version>='3.0'
coverage>=4.5.2

27
tox.ini
View File

@ -41,6 +41,33 @@ deps = -r{toxinidir}/requirements.txt
commands = flake8 {posargs} hooks unit_tests tests actions lib
charm-proof
[testenv:cover]
# Technique based heavily upon
# https://github.com/openstack/nova/blob/master/tox.ini
basepython = python3
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
setenv =
{[testenv]setenv}
PYTHON=coverage run
commands =
coverage erase
ostestr {posargs}
coverage combine
coverage html -d cover
coverage xml -o cover/coverage.xml
coverage report
[coverage:run]
branch = True
concurrency = multiprocessing
parallel = True
source =
.
omit =
.tox/*
charmhelpers/*
[testenv:venv]
basepython = python3
commands = {posargs}