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;

0 ответов

Другие вопросы по тегам