Tha.coverage: handy wrapper for creating coverage reports

Tags: plone, buildout, python

tha.coverage provides a bin/createcoverage script that servers as a one-line coverage report generator. It is essentially a wrapper around z3c.coverage. It is intended for use inside buildouts, as it assumes a bin/test command.

To install, add tha.coverage to a zc.recipe.egg section. You often already have one for common scripts. So something like this:

[buildout]
...
parts =
    ...
    console_scripts

[console_scripts]
recipe = zc.recipe.egg
eggs =
    ...
    tha.coverage

This gives you a bin/createcoverage script that does the following:

  • Check whether bin/test exists. Safety feature.

  • Remove old coverage dir if it exists. This way you always have clean results.

  • Run bin/test with the --coverage=... option.

  • Use z3c.coverage to create the actual reports. By default into ./coverage/reports. If you start createcoverage with a command line argument (bin/createcoverage /tmp/output) it will put the reports into that directory.

  • Open the reports in your webbrowser if you did not specify an output directory. The assumption here is that if you run the script as-is, you just want to see the coverage reports. If you do specify an output directory, you’re probably running it from within buildbot or so on the server and you want the output in some webserver-served directory. No use to open a browser on the server.

The OSX update that came out this morning comes with a fix to the enscript command, so if you tried z3c.coverage before but were plagued with an “unkown argument –footer” error: that’s gone now. It was never a problem on linux, of course.

 
vanrees.org logo

About me

My name is Reinout van Rees and I work a lot with Python (programming language) and Django (website framework). I live in The Netherlands and I'm happily married to Annie van Rees-Kooiman.

Weblog feeds

Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):