From: Michael G. Schwern Date: Sun, 16 Dec 2001 23:59:01 +0000 (-0500) Subject: alarm() test, take two X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=6ae8f908c03a1e93786c4fa06f22a36a2a7b4a9c;p=p5sagit%2Fp5-mst-13.2.git alarm() test, take two Message-ID: <20011217045901.GL17232@blackrider> p4raw-id: //depot/perl@13735 --- diff --git a/t/op/alarm.t b/t/op/alarm.t new file mode 100644 index 0000000..0dfc661 --- /dev/null +++ b/t/op/alarm.t @@ -0,0 +1,50 @@ +#!./perl + +BEGIN { + chdir 't'; + @INC = '../lib'; + require './test.pl'; +} + +BEGIN { + use Config; + if( !$Config{d_alarm} ) { + skip_all("alarm() not implemented on this platform"); + } +} + +plan tests => 4; +my $Perl = which_perl(); + +my $start_time = time; +eval { + local $SIG{ALRM} = sub { die "ALARM!\n" }; + alarm 3; + + # perlfunc recommends against using sleep in combination with alarm. + 1 while (time - $start_time < 6); +}; +alarm 0; +my $diff = time - $start_time; + +# alarm time might be one second less than you said. +is( $@, "ALARM!\n", 'alarm w/$SIG{ALRM} vs inf loop' ); +ok( $diff == 3 || $diff == 2, ' right time' ); + + +my $start_time = time; +eval { + local $SIG{ALRM} = sub { die "ALARM!\n" }; + alarm 3; + system(qq{$Perl -e "sleep 6"}); +}; +alarm 0; +$diff = time - $start_time; + +# alarm time might be one second less than you said. +is( $@, "ALARM!\n", 'alarm w/$SIG{ALRM} vs system()' ); + +TODO: { + local $TODO = "alarm() can't stop a system call with \$SIG{ALRM} set"; + ok( $diff == 3 || $diff == 2, ' right time' ); +}