Avoid generating thousands of UTF-8 warnings when testing under a
[p5sagit/p5-mst-13.2.git] / t / op / alarm.t
index 12c8c26..8be24db 100644 (file)
@@ -13,7 +13,7 @@ BEGIN {
     }
 }
 
-plan tests => 4;
+plan tests => 5;
 my $Perl = which_perl();
 
 my $start_time = time;
@@ -29,7 +29,7 @@ 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' );
+ok( abs($diff - 3) <= 1,   "   right time" );
 
 
 my $start_time = time;
@@ -44,4 +44,16 @@ $diff = time - $start_time;
 # alarm time might be one second less than you said.
 is( $@, "ALARM!\n",             'alarm w/$SIG{ALRM} vs system()' );
 
-ok( $diff == 3 || $diff == 2,   '   right time' );
+{
+    local $TODO = "Why does system() block alarm() on $^O?"
+               if $^O eq 'VMS' || $^O eq'MacOS' || $^O eq 'dos';
+    ok( abs($diff - 3) <= 1,   "   right time (waited $diff secs for 3-sec alarm)" );
+}
+
+
+{
+    local $SIG{"ALRM"} = sub { die };
+    eval { alarm(1); my $x = qx($Perl -e "sleep 3") };
+    chomp (my $foo = "foo\n");
+    ok($foo eq "foo", '[perl #33928] chomp() fails after alarm(), `sleep`');
+}