加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl POD覆盖脚本和测试(不是模块)

发布时间:2020-12-15 21:43:44 所属栏目:大数据 来源:网络整理
导读:有没有办法测量脚本的POD覆盖范围(例如* .pl)? 我可以使用Pod :: Coverage和Test :: Pod :: Coverage测量包的文档覆盖率,但是我无法测量它的脚本,因为Pod :: Coverage和底层的Devel :: Symdump使用require来检查包的内容,由于缺少.pm文件而失败. 有办法解决
有没有办法测量脚本的POD覆盖范围(例如* .pl)?

我可以使用Pod :: Coverage和Test :: Pod :: Coverage测量包的文档覆盖率,但是我无法测量它的脚本,因为Pod :: Coverage和底层的Devel :: Symdump使用require来检查包的内容,由于缺少.pm文件而失败.

有办法解决这个问题吗?

(我必须在.pl文件中包含POD文档,因此将所有内容移动到模块中并将其记录在那里对我来说不是一个好的解决方案.无论我在哪里,它都已经这样做了.)

解决方法

Pod :: Coverage加载(执行)模块以让它创建subs等.您必须以某种方式阻止.pl正常运行.
#!/usr/bin/perl
...
main(@ARGV) if !$ENV{NO_RUN};
1; # For do()

但是一旦你这样做了,这很容易,因为你告诉Pod :: Coverage要检查哪个包(包)和要检查的文件(pod_from).

#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 1;

use Pod::Coverage qw( );

{
    package the_script;
    local $ENV{NO_RUN} = 1;
    do "script.pl" or die $@;
}

my $pc = Pod::Coverage->new(
   package  => 'the_script',pod_from => 'script.pl',);

# P::C expects "require the_script;" to succeed.
$INC{"the_script.pm"} = 1;

my $coverage = $pc->coverage();
die $pc->why_unrated()
   if !defined($coverage);

ok($coverage)
   or diag("Not covered: ".join(',',$pc->naked()));

1;

测试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读