如何使用Devel :: Cover with prove?

时间:2012-06-26 17:05:18

标签: perl

我在http://www.perlmonks.org看到了一些类似的问题,但我仍然没有得到它。 想象一下,我有一个带有'lib /'和't'目录的项目。我用'证明'来运行我的测试:

$ cd $PROJECT_ROOT
$ prove ./*.t

我想在html中获取“lib /”目录中的一个或多个文件的报告。我不想要报告“t”目录中的文件。 一个简单的例子就足够了。感谢

2 个答案:

答案 0 :(得分:6)

  1. perl Makefile.PLperl Build.PL
  2. cover -test

答案 1 :(得分:5)

正确的方法是始终使用Makefile.PL/Build.PL,就像选择的答案所示。但是,有时你不是那个刚开始的人,所以......

我曾经制作过伪造的文件:

 % cat Makefile
 test:
      prove -Ilib -r t

以下似乎也有效(无需触摸磁盘上的任何文件):

cover -t -make 'prove -Ilib -r t; exit $?'

这只能用于perl的system / exec如何处理其中包含shell元字符的参数(在本例中为;)并且如果{{1}将来可能会中断决定更严格地引用它。它也不应该在Windows下工作。我希望cover代之以cover选项。

这个仍然会为* .t以及非标准位置的CPAN模块生成覆盖范围。可以使用+ select / + ignore选项修复此行为(请参阅Devel::Cover's manpage):

-prove

所以tl; dr“magic”命令是

cover -t +select ^lib +ignore ^

编辑以下内容对我不起作用 - 它只打印简短摘要:

cover -t +select ^lib +ignore ^ -make 'prove -Ilib -r t; exit $?'

请注意 PERL5OPT="$PERL5OPT -MDevel::Cover" prove -Ilib -r t cover -t +select ^lib +ignore ^ prove -MSomething应用于Something本身并且不会将其传递(与-I不同)。