James,

The explanation is that D::C saves a copy of your @INC at build time in a .pm and subsequently uses that list to filter out the code perl libraries. That @INC probably had some /5.8.4/ subdirs in it. With the new Perl, the @INC now has /5.8.7/ subdirs and those aren't being filtered.

When I first discovered that detail, I thought "Why can't D::C just look at @INC at runtime?" The answer, of course, is that you've probably changed @INC with -Mblib or -Ilib or 'use lib qw(.);' or something. So, there has to be a pristine @INC to reference.

I haven't fully thought this out, but it seems to me that some combination of @INC from %Config and $ENV{PERL5LIB} should cover pretty much all of core, so perhaps D::C can do away with the hard- coded @INC filter list in the future?

Chris

On Nov 1, 2005, at 7:25 PM, James E Keenan wrote:

When I began to write this posting, it was to get an answer to a question. But I figured out a workaround halfway through, so now I'm posting an answer.

I have happily been using Devel::Cover for more than a year on Perl 5.8.4 on Darwin (Mac OS X 10.3). Recently I upgraded to Perl 5.8.7. Tonight I went to use Devel::Cover (v0.55, as previously) for the first time since that Perl upgrade. At first, it no longer DWIMmed. Specifically:

1. When I ran 'make test HARNESS_PERL_SWITCHES=MDevel::Cover', I got this message:

    t/01_test..........
    This version of Devel::Cover was built with Perl version 5.008004.
    It is now being run with Perl version 5.008007.
Attempting to make adjustments, but you may find that some of your modules do not have coverage data collected. You may need to alter the +- inc, +-ignore
    and +-select options.

    t/01_test..........ok

I'd never had to set these options before; previously, D::C just worked. Also, D::C took much longer to run.

2. I was testing coverage of a new module I'm developing called File::Save::Home. When I called 'cover', I got a report on this module, but also on every core module as well:

    [snip]
---------------------------- ------ ------ ------ ------ ------ ------ ------ File stmt bran cond sub pod time total ---------------------------- ------ ------ ------ ------ ------ ------ ------ ...perl5/5.8.7/AutoLoader.pm 0.0 0.0 0.0 0.0 0.0 n/a 0.0 ...l/lib/perl5/5.8.7/Carp.pm 0.0 0.0 0.0 0.0 0.0 n/a 0.0 ...erl5/5.8.7/Digest/base.pm 0.0 0.0 n/a 0.0 0.0 n/a 0.0 ...b/perl5/5.8.7/Exporter.pm 50.0 57.1 44.7 33.3 0.0 0.3 44.8 ...5/5.8.7/Exporter/Heavy.pm 10.4 8.8 12.5 11.1 0.0 0.1 9.8 ...l5/5.8.7/File/Basename.pm 28.2 25.8 7.7 50.0 100.0 0.1 27.8
    [snip]
....8.7/warnings/register.pm 100.0 50.0 n/a 100.0 0.0 0.1 89.5 blib/lib/File/Save/Home.pm 77.1 44.4 n/a 100.0 100.0 0.3 73.4 Total 10.8 6.2 4.3 12.3 14.0 100.0 9.0 ---------------------------- ------ ------ ------ ------ ------ ------ ------


    Writing HTML output to
    /Users/jimk/work/fsh/File-Save-Home/cover_db/coverage.html ...
    done.

This problem of excessive output is the same one I typically experience using D::C (v0.47, I believe) on Windows. This is much more output than I want or need.

I hypothesized that if I were to upgrade to a new version of D::C, it would be compiled against Perl 5.8.7 and these problems might go away. But 'cpan' did nothing because it detected that I was using the most recent version of D::C.

So I downloaded the latest version of Devel::Cover from CPAN and installed it manually. (I did call 'make install UNINSTALL=1'.) This solved the problem. The message described above went away, and 'cover' reported only the results for the module under development.

Jim Keenan


--
Chris Dolan, Software Developer, Clotho Advanced Media Inc.
608-294-7900, fax 294-7025, 1435 E Main St, Madison WI 53703

Clotho Advanced Media, Inc. - Creators of MediaLandscape Software (http://www.media-landscape.com/) and partners in the revolutionary Croquet project (http://www.opencroquet.org/)

Reply via email to