Prevent code coverage regressions
Project description
ccguard
you can only improve! :-)
ccguard compares the current code coverage to past code coverage. ccguard fails unless your new code coverage is equal or better than your past code coverage!
requires
- python
- git
Should work on both python2 and python3. python2 is not anymore supported.
welcome beta testers: setup
# prepare the package and install it
./distrib.sh
contribute
./bootstrap.sh
please execute flake8, black, pytest and ccguard against all of your changes. (a pre-commit hook will ensure that everythng is fine before letting you commit)
./pre-commit
execute this tool
cd your-favorite-source-folder
# execute unit tests, collecting code coverage here
ccguard coverage.xml
# change your code somehow
# execute unit tests, collecting code coverage
# then verify that your code coverage has not decreased
ccguard --consider-uncommitted-changes coverage.xml
# if you are rather a visual person, check cc.html and diff.html
ccguard --html --consider-uncommitted-changes coverage.xml
# if needed to display the line coverage for each file in the HTML report,
# fine tune the source files path with the --repository argument
ccguard--html --consider-uncommitted-changes coverage.xml --repository src/
# allow regressions up to 3%
ccguard coverage.xml --tolerance 3
# allow regressions up to 10%, but never descend below 70%
ccguard coverage.xml --tolerance 10 --hard-minimum 70
# use the web adapter (ie. send the data to ccguard_server).
# requires a ccguard.server.address setting in the config.
ccguard coverage.xml --adapter web
please see how to produce code coverage data in your favourite language.
display code coverage trends
What a better feedback loop than measuring the work you have accomplished?
ccguard_log
synchronize repositories
The use case being: you wish to use ccguard as pre-commit. Your team already has some references. Then you could be interested in sharing them.
# upload the report to a distant redis repository
ccguard_sync sqlite redis
# download the report from a distant redis repository
ccguard_sync redis sqlite
# limit to a single repository
ccguard_sync redis sqlite --repository_id abcd
# limit to a single repository and a single commit
ccguard_sync redis sqlite --repository_id abcd --commit_id ef12
launch a local server
ccguard server allows you to centralize the reports and the regression checks (useful for CI workflows) also serves coverage and diff reports.
ccguard_server
credits
- Alexandre Conrad for his wonderful pycobertura
- all the beta testers for their precious feedback
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.