老实说,我不确定这是一个错误还是我错过了什么。
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;