Paul Johnson writes:
In accordance with the terms of my grant from TPF this is the monthly report for my work on improving Devel::Cover covering May and June 2014.
Actually, it's really only for May. I did some work on Devel::Cover in June, but I am not charging that to the grant, so the month referred to here is May.
This month I released versions 1.14 and 1.15.
Perls 5.20.0 and 5.21.0 were released this month and, thanks in no small part to work by Matthew Horsfall, they are both fully supported by Devel::Cover.
The main body of work this month was the merging of the cpancover branch. I have had cpancover.com up and running for some time now. But it has only been providing coverage for a fairly small subset of the modules on CPAN. Naturally, I tried to pick the most interesting modules, but the coverage of CPAN was minimal.
Since the QA hackathon I have been trying to extend the scope of cpancover to provide coverage for all of CPAN, and not just for the most recent version. In this quest I have been aided and assisted by Neil Bowers, Olaf Alders and others.
The major problem with running Devel::Cover on arbitrary code is an extension of running arbitrary code. Even if the author of the code has no malicious intent and made no coding mistakes, there are surely bugs in Devel::Cover which might cause the coverage run to loop indefinitely or to use up all the memory or cause other problems.
My initial attempts to solve these problems using things like fork and sleep and kill and killpg weren't completely successful. (Those CPAN authors are so crafty!) And, naturally, other people who might be willing to provide machines on which to run cpancover will want some assurances regarding the resource usage.
So I looked into using Docker. Running each coverage run in an individual docker container should allow each instance to be resource constrained and ultimately completely killed if necessary.
Docker is still reasonably immature, but has recently released version 1 which has removed the warning not to use it in production. I had problems with the earlier versions, but each release has made it more solid. The branch containing this work has been fairly successful and is now merger into the git master.
This has been running on cpancover.com and, although I've still not been able to work all the way through CPAN, there's a pretty good start at http://cpancover.com/staging/index.html (Warning, that's quite large now - I need a better solution than showing all modules on a single page.)
Perhaps more importantly, there's a json file available giving basic coverage information about the covered modules. This will eventually be used by Neil Bowers' CPAN dashboard and by MetaCPAN to provide information and create links to a module's cpancover page. It's also available to anyone else who can think of a good use. Suggestions, and code, welcome. The json data is available at http://cpancover.com/staging/cpancover.json
I really want to get this cpancover work to pick up new modules as they are released. I think the only work left is fixing up the occasional problems that show up because of docker, providing a better landing page and navigation, and automating the whole thing.
Other work this month included fixing up some testing failures on *BSD and Windows and providing better support for 5.20 or, more accurately, 5.21 and beyond when CGI.pm will be removed from the core.
As usual, there were also some patches applied, pull requests merged, and other bugs fixed.
From the figures below, you can see that this grant is now very nearly completed. Within the next few weeks I will finish it up and write a closing report. If you or your company has contributed to the Perl 5 Core Maintenance Fund then I would like to offer my sincere thanks for your help in funding this work and trust that you have found it useful. Dan Wright, the Treasurer of The Perl Foundation, has recently written about how the fund is now almost depleted. See http://blogs.perl.org/users/dan_wright/2014/07/p5cmf-needs-some-love.html
If you would like to see the other grantees being able to continue their work (and there is some excellent work being done) then please consider whether you or, more likely, your company would be in a position to donate to the Core Maintenance Fund.
Closed Github tickets:
89 Allow -coverage default,-pod option to cover
Fixed cpantesters reports:
... and many more ...
You can see the commits at https://github.com/pjcj/Devel--Cover/commits/master
Total hours worked on grant: 390:25