Devel::Cover grant report April 2014
Tue, 27-May-2014 by
_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 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":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":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 @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, sorry.
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":http://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":https://github.com/pjcj/Devel--Cover/commits/master
bq. 05.04 4:00
Total hours worked on grant: 365:25