Hallo!
In einer Funktion habe ich eine Eingabeaufforderung um zu verhindern, dass die Nachricht von den folgenden Ausgaben überschrieben wird.
sub function {
...
if ( ... ) {
warn "Warning message!";
print "Press ENTER";
my $dummy = <STDIN>;
}
...
}
Wenn ich die Funktion so teste
use Test::More;
use Test::FailWarnings;
use Capture::Tiny qw( capture_merged );
ok( my $dummy = capture_stdout{ my $d = choose( function( { opt1 => val1 } ) } );
ok( my $dummy = capture_stdout{ my $d = choose( function( { opt2 => val2 } ) } );
done_testing;
dann bleibt der Test nach dem ersten
warn hängen.
Wenn ich es so schreibe, dann funktioniert es, aber es sieht nicht gut aus:
use Test::More;
use Test::Fatal;
use Capture::Tiny qw( capture_merged );
$SIG{__WARN__} = sub { die @_ };
is( exception { my $dummy = capture_merged{ function( { opt1 => val1 } ) } }, undef, "{ opt1 => val1 } does not warn" );
is( exception { my $dummy = capture_merged{ function( { opt2 => val2 } ) } }, undef, "{ opt2 => val2 } does not warn" );
done_testing;
Gibt es eine Möglichkeit, die Eingabeaufforderung automatisch zu überspringen?