Perl For Devel::Cover覆盖特定路径中的所有文件

Perl For Devel::Cover覆盖特定路径中的所有文件,perl,testing,devel-cover,Perl,Testing,Devel Cover,我的任务是清理一些写得很差的遗留代码,但是有大量的测试。其中一些测试在如下文件中运行代码: fcgi/*.fcgi 我非常希望将这些内容包括在我的报道中。事实上,我希望确保我可以在lib/、fcgi/和utils/中包含所有内容(无论扩展名如何),而在任何其他目录中都不包含任何内容 这是我的许多尝试之一: HARNESS_PERL_SWITCHES=-MDevel::Cover=+inc,fcgi,+inc,lib,+inc,util prove -rl t 失败 当我运行诸如“cover-

我的任务是清理一些写得很差的遗留代码,但是有大量的测试。其中一些测试在如下文件中运行代码:

fcgi/*.fcgi
我非常希望将这些内容包括在我的报道中。事实上,我希望确保我可以在
lib/
fcgi/
utils/
中包含所有内容(无论扩展名如何),而在任何其他目录中都不包含任何内容

这是我的许多尝试之一:

HARNESS_PERL_SWITCHES=-MDevel::Cover=+inc,fcgi,+inc,lib,+inc,util prove -rl t
失败

当我运行诸如“cover-test”或“./Build-testcover”之类的东西时,继续得到“未定义测试”


这是Devel::Cover 0.88和perl版本5.12.2好的,我举了你的例子,稍微修改了一下,它对我来说似乎很好,只需要一个最小的Makefile.PL和Cover-test。请克隆此:git://gist.github.com/3061026.git

自述文件包含在我的系统上发生的事情

具体来说,在我的一个测试文件中,我添加了:

use 5.12.0;
use Test::More;

use lib 'lib';

use Foo;
require 'fcgi/foo.fcgi';   # <====== pull in an fcgi file

is craptastic(), 'This is craptastic',
    'We have run an fcgi/*fcgi test';
使用5.12.0;
使用测试::更多;
使用lib'lib';
使用Foo;

需要“fcgi/foo.fcgi”;#您能否创建一个最小的测试用例tarball,其中包含makefile.pl、一些.t文件和一个normal.pm文件,以及一些正在调用但未正确覆盖的其他文件?如果我有,我肯定我能给你找到正确的配置。PM我你的电子邮件,我会把它发送过来。谢谢(不完全相同,但对于通过谷歌找到的其他人来说)在类似的情况下,我添加了拉入我所有的lib/***.pm文件。这样,
cover-test
就知道了所有这些,包括那些没有经过测试的。David Farrell展示了如何基于globs拉入其他文件。在实际系统中,我一直使用最小的Makefile“不运行测试”。然而,正确的咒语(带有
prove
)似乎是:harnese\u PERL\u SWITCHES=-MDevel::Cover=+inc,t,+select,fcgi prove-l tVery奇怪。也许你的EUMM是旧的?Mithaldu,星期一我得再查一下。我发布的示例对我的“最小测试用例”有效,但对真正的代码库无效。