report for my work on improving Devel::Cover covering April 2014.
This month I released versions 1.10, 1.11, 1.12 and 1.13.
I finished up the work I was doing to the test system. Part of this included
improving the tests for merged databases, and imposing more of an ordering on
STDOUT and STDERR within the tests to stop spurious failures. The golden
results are also generated in sub-processes now for greater separation. Version
1.10 also included lots of tidying of the test code, making the test output more
consistent, and re-generating and validating all the golden results. The upshot
of all this is that adding new test should be much easier now.
Last month I added a Sereal backend to be used in preference to JSON or
Storable. I started getting failure reports from cpantesters on perl5.8 on
linux and later versions on *BSD. I tracked it down to a problem with Sereal
itself, with Yves Orton further traced it to a problem with perl itself.
The problem manifest itself as hash iterators being left in an undefined state
after decoding a data structure. So to solve the problem in Devel::Cover I
stopped using "each" and used "keys" instead whilst accessing the coverage
database. The Sereal bug report is https://github.com/Sereal/Sereal/issues/48
I was getting further *BSD cpantesters failure reports which came down to perl
reporting that subroutines were defined on a different line on those machines.
I'm not sure of the root cause of those problems and, to be frank, it's not a
problem that causes any confusion for anyone using Devel::Cover on such
machines, so I took a pragmatic approach and changed the tests such that the
reporting is the same on all machines (as far as I am aware). Certainly I
haven't got any similar cpantesters reports since the fix.
Perl 5.19.11 was released and so I tested against it. There were no problems,
which bodes well for the upcoming 5.20.0 release.
fREW discovered a problem with with his module on 5.8 which showed up when
testing on travis-ci. He reported it at
https://github.com/travis-ci/travis-ci/issues/2204 amd miyagawa and haarg
narrowed in down and determined that the error was in Devel::Cover. The problem
was with C< use 5.006; > and I am curious why it wasn't discovered before. Or
perhaps it was and just wasn't reported.
The only reason I am keeping support for 5.8 at the moment is because it
basically works and it's not causing me any real difficulties. This applies
doubly for 5.6. So I considered just raising the minimum supported version to
5.10, but it turned out that the fix was not particularly difficult, so I just
implemented it. (The implementation was just some #ifdefs on the version number
around code intercepting "require".)
I started getting Windows cpantesters failure reports which turned out to be due
to rounding differences between platforms. Should x.5% be rounded up or down?
Well, the answer to that is clear, but it showed up another problem. 99.96%
would be rounded to 100%, which is not the best solution. So I fixed both
problems by truncating instead of rounding. This may mean that some of your
coverage percentages are reduced with this new version. Muahahaha! I mean, er,
I also continued working on the cpancover branch with assistance (and prodding)
from Neil Bowers, oalders, ranguard and Seveas. The plan is for the coverage
runs of modules to take place in Docker containers, and to make the results
available for metacpan and Neil's CPAN dashboard. For this to be useful
generally we need more results than the few I was originally calculating and
displaying on cpancover.com, and it also means dealing with the CPAN edge cases
at least to the extent that they do not cause any harm. I hope to have this
branch operational soon.
As usual, there were also some patches applied, pull requests merged, and
other bugs fixed.
Closed Github tickets:
84 Redirect loop on CPAN download link - breaks cpanm
- seems to have been a proxy problem
86 Progress meters when processing nytprof.out
- a problem for Devel::NYTProf, not me, but I'd like it fixed too ;-)
87 Devel::Cover explodes perl 5.8 sorta
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: 365:25
Paul Johnson - firstname.lastname@example.org