Ich habe die folgende Logik:Wie markiert man `//` Bedingungen mit Devel: :: Cover?
sub test {
my ($x, $y) = @_;
die unless defined $x || defined $y;
# uncoverable condition false
return $x // $y;
}
test(1, 2 );
test(1, undef);
test(undef, 2 );
test(undef, undef);
Die return
Anweisung wird nie für den Zustand abgedeckt werden, wo $x
und $y
beide nicht definiert sind. So ist die Berichterstattung Bericht weist darauf hin, dass diese Bedingung als ungedeckt:
% | coverage | condition
------------------------------
67 | A | B | dec | $x // $y
|-------------|
===> | 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | X | 1 |
Gibt es eine Möglichkeit für mich, diesen Zustand als uncoverable
zu markieren? Hinzufügen von uncoverable condition false
über der Linie behebt die Coverage-Zusammenfassung, aber wenn ich auf die Details schaue, ist die Bedingungsabdeckung immer noch bei 67%.
Funktioniert Devel :: Cover den Operator //
?
Auf einer anderen Anmerkung, wenn ich die die
Linie auf das Äquivalent zu ändern:
die "died" if !defined $x && !defined $y;
, die auch die Leitung wird 67% gedeckt.
% | coverage | condition
------------------------------
67 | A | B | dec | defined $x or defined $y
|-------------|
| 0 | 0 | 0 |
===> | 0 | 1 | 1 |
| 1 | X | 1 |
Könnte das ein Fehler sein?
Welche Version von Devel :: Abdeckung sind Sie? –
Die Version, die ich benutze ist 1,08 (Strawberry Perl 5,18, wenn das einen Unterschied macht) – stevenl