1

老实说,我不确定这是一个错误还是我错过了什么。

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

我有 2 个文件 -Test并且Test2-uncoverable位于Test.

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

混乱的报道

现在注释掉触发条件并再次运行所有内容,我得到:

预期覆盖率

该分支现在被正确地忽略为可发现的。唯一改变的是注释掉触发条件

我真的不明白这种行为 - 如果有人愿意尝试这个,看看这是否是我不理解某些东西或错误。

免责声明:我不是 perl 大师 :) 我试图进一步简化它,但我无法重现它——即使是简化也是值得赞赏的——也许它有助于追查它的根本原因。

编辑:我制作了这个 repo 以使其更容易重现: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;
4

0 回答 0