Thread Ist es möglich, eine STDIN-Aufforderung unwirksam zu machen? (7 answers)
Opened by Kuerbis at 2014-04-23 14:54

Kuerbis
 2014-04-23 14:54
#174938 #174938
User since
2011-03-20
943 Artikel
BenutzerIn
[default_avatar]
Hallo!

In einer Funktion habe ich eine Eingabeaufforderung um zu verhindern, dass die Nachricht von den folgenden Ausgaben überschrieben wird.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
sub function {
    ...
     if ( ... ) {
        warn "Warning message!";
        print "Press ENTER";
        my $dummy = <STDIN>;
    }
    ...
}


Wenn ich die Funktion so teste

Code (perl): (dl )
1
2
3
4
5
6
7
8
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:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
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?

View full thread Ist es möglich, eine STDIN-Aufforderung unwirksam zu machen?