jkeenan1 has asked for the wisdom of the Perl Monks concerning the following question:

Although I've been using Devel::Cover for two years, I must admit that I don't yet understand how to use some of its options or how to best use it outside the context of make test. In the coming days I'm likely to want to use it in connection with prove and I welcome suggestions from the monks as to how to do it best.

This is the context in which I'd like to use it. I'll be in a Subversion working copy of a directory tree:

/home/svn/Alpha/Beta/Gamma/ Epsilon.pm Zeta.pm Eta.pm Eta/Theta.pm Iota.pm t/ 01.t 02.t 03.t TestAuxiliary.pm Albemarle.pm Beverly.pm Cortelyou.pm Cortelyou/ Dover.pm Edinborough.pm

My assignment will be to add tests to the already existing /home/svn/Alpha/Beta/Gamma/t/*.t files. I don't have the luxury of copying the .pm files to a blib/lib subdirectory and running HARNESS_PERL_SWITCHES=-MDevel:: Cover make test. I will only have prove at my disposal. The test files will use .pm files from various points in the tree beneath /home/svn/Alpha. When I run it with Devel::Cover, I want to get coverage reports on those packages, but not on core packages, and not on the .t files themselves.

Now, I know that I'm supposed to be able to do this by using Devel::Cover's +inc and -inc options, but I've never been able to understand them. In a posting on perl.qa last year, Mark Stosberg cited a little shell script, cprove from Randal's CGI-Prototype distribution on CPAN.

#!/bin/sh cover -delete PERL5OPT=-MDevel::Cover=+inc,/Volumes/UFS prove -v -I../lib "$@" && cover

But I don't understand why the comma is present after +inc. Can anyone give me some pointers as how best to combine prove with Devel::Cover?

Thanks in advance.

Replies are listed 'Best First'.
Re: Devel::Cover and prove: How best to combine?
by merlyn (Sage) on Sep 17, 2006 at 03:27 UTC
      In the last few days I finally got back to this problem. Here's what I used when I wanted to get a text version of the report and when I wanted the full line-by-line analysis of only file MyModule.pm:

      cover -delete PERL5OPT=-MDevel::Cover prove *.t "$@" && cover -report text -select_r +e MyModule\.pm > cov

      Jim Keenan
Re: Devel::Cover and prove: How best to combine?
by gellyfish (Monsignor) on Sep 17, 2006 at 08:40 UTC

    The stuff after the = in the -M switch is the import list of the module so in the above this will be equivalent to having:

    use Devel::Cover +inc => '/Volumes/UFS';
    within some program file. The comma is there with no space to satisfy the requirements of the shell as the -M the module name and the import list must all appear as one argument to perl.

    /J\

      Thanks for your responses; I'll try it out.

      (For some reason, jellyfish's post didn't show up when I used the Perlmonks search box.)

      Jim Keenan
Re: Devel::Cover and prove: How best to combine?
by Khen1950fx (Canon) on Sep 17, 2006 at 06:18 UTC