Devel::Cover - Невозможно пометить ветку как непокрываемую
Честно говоря, я не уверен, что это ошибка или я что-то упустил.
Devel::Cover
игнорирует мой # uncoverable branch true
на основании предыдущего условия как-то.
У меня есть 2 файла - Test
а также Test2
- uncoverable
в Test
,
Теперь, когда условие триггера (см. Ниже) не закомментировано, я получаю 50% покрытия ветви, которое выглядит так:
Теперь закомментируйте условие триггера и запустите все снова, и я получу:
Ветвь теперь правильно игнорируется как недоступная. Единственное, что было изменено, это комментирование условия триггера.
Я действительно не понимаю этого поведения - если бы кто-то захотел попробовать это, чтобы увидеть, не я ли что-то не понимаю или это ошибка.
Отказ от ответственности: я не гуру 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;