Devel :: Cover-不可能将分支标记为不可覆盖

时间:2018-12-09 07:47:19

标签: perl devel-cover

老实说,我不确定这是错误还是我遗漏了一些东西。

Devel::Cover基于先前的条件以某种方式忽略了我的# uncoverable branch true

我有2个文件-TestTest2-uncoverableTest中。

现在,当未注释触发条件(见下文)时,我将获得50%的分支覆盖率,如下所示:

messed up coverage

现在注释掉触发条件,然后再次运行所有命令,我得到:

expected coverage

现在可以正确忽略该分支,因为它是不可恢复的。唯一更改的是注释掉触发条件

我真的不了解这种行为-如果有人愿意尝试一下,看看这是否是我不了解某些内容或错误。

免责声明:我不是perl专家:)我试图进一步简化它,但是我无法以其他方式复制它-甚至对此简化也很感激-也许它将有助于追溯其根本原因。

编辑:我做了此存储区以使其更易于重现:https://github.com/lukaskuzmiak/Devel--Cover_coverage_issue_PoC

package My::Test;

use 5.026;
use strict;
use warnings;

use My::Test2;


sub test {

    my $test2 = My::Test2->new({});

    if ($test2 > 1) { say 'something'; } # let's call this "trigger condition"

    # uncoverable branch true
    $test2->asdf(
        {
            variable => 'asdf'
        }
    ) or say 'something else';

    return 1;
}

1;

再加上Test2

package My::Test2;

use 5.026;
use strict;
use warnings;

sub new {
    my ($class, $args) = @_;
    my $self = {};
    return bless $self, $class;
}

sub asdf {
    my ($class, $args) = @_;
    return 1;
}

1;

0 个答案:

没有答案