report for my work on improving Devel::Cover covering March 2014.
Those of you who have been paying close attention may have noticed that it has
been some months since my last report. Unfortunately I got rather busy and
Devel::Cover work was one of the casualties. However, with the approval of my
grant managers and the President of TPF I am intending to complete the grant.
This month saw the annual Perl QA Hackathon which was held in Lyon. You can
find my report at
hackathon gave me four days to really get back into working on Devel::Cover so
I decided to restart my grant work directly afterwards.
Having discussed much about how to improve cpancover.com with Olaf Alders,
Neil Bowers and Barbie, I made a start on the implementation. There are a
number of problems with the current implementation. The main difficulties are
that there is no API for services such as metacpan or the CPAN dashboard to
use, and that the coverage of CPAN is somewhat minimal. I have made a good
start on solving these problems and making cpancover more useful.
I have also noted official support for 5.18.2 and prepared for the removal for
CGI.pm from the core.
A bug in bleadperl (or not, as the case my be),
https://rt.perl.org/Public/Bug/Display.html?id=121317 had me looking at
Devel::Cover's database storage options. Devel::Cover can currently use JSON
(either XS or pure perl) or Storable, in that order of preference. Yves Orton
suggested that Sereal might by a sensible serialisation format, and so I wrote
a Serial backend module.
The module performs well, being faster than JSON, and also having the
advantage of having no other dependencies. Devel::Cover cannot be used on
modules with it uses itself, but if the Sereal folk ever want to run
Devel::Cover on Sereal they can use one of the other serialisation formats by
setting the $DEVEL_COVER_IO_OPTIONS environment variable.
I've had a bug report about merging disparate coverage databases for a little
while (github 71), and Tina Müller hit the same problem and mentioned it on
IRC, so I thought it was time to look into it. It turns out that I was not
correctly merging the structures of the databases - the parts which keep
information about the statements and other constructs in the code. Adding
tests for this took a little work, and gave me cause to improve Devel::Cover's
Because of the way in which Devel::Cover interacts with Perl, it is not always
easy to test Devel::Cover in the way in which a more ordinary module might be
tested. (Although that's not to say that I do all I can in that area and
improvement here is more than warranted.) The majority of Devel::Cover is
tested by having a number of small scripts which are run under Devel::Cover,
and the output of the text report is compared against golden results. This is
useful because it makes development against a problematic script simple.
Adding a new test case is also simple. It is a matter of adding the script
and any dependencies into the tests directory and generating golden results.
Once the golden results are generated, they should be checked manually for
veracity, of course.
As usual, there were also some patches applied, pull requests merged, and
other bugs fixed.
This month I released Devel::Cover version 1.09.
Closed Github tickets:
71 merge structures when merging dbs
75 Test failure with perl 5.19.6
76 perl 5.8 is also available at travis-ci
78 Deep recursion segfault with use overload...
Merged pull requests:
79 Execute get_magic once, and store the resulting value.
80 abranch_return_sub.t fail / bleadperl v5.19.5-368-ge45d898
81 added line to support spaces in path to dbname.
83 expand *all* tabs in source code
Closed RT tickets:
#90591 abranch_return_sub.t fail on 5.19.6
Fixed cpantesters reports:
You can see the commits at https://github.com/pjcj/Devel--Cover/commits/master
Total hours worked on grant: 334:55
Paul Johnson - firstname.lastname@example.org