time() resolution is full seconds
Jan Dubois [Thu, 22 Apr 2010 19:36:31 +0000 (12:36 -0700)]
So any fudging in the timing needs to be at least 1 second to have any
effect. Upped the total $sleep value to 4 (on Windows) to make sure at
least 3 seconds have passed.  Amends commit 0ebb4f0.

t/op/sselect.t

index f4c95d4..ffb4aad 100644 (file)
@@ -31,11 +31,13 @@ like ($@, qr/^Modification of a read-only value attempted/);
 eval {select $blank, $blank, "a", 0};
 like ($@, qr/^Modification of a read-only value attempted/);
 
-my $sleep = 3;
+my($sleep,$fudge) = (3,0);
 # Actual sleep time on Windows may be rounded down to an integral
 # multiple of the system clock tick interval.  Clock tick interval
 # is configurable, but usually about 15.625 milliseconds.
-my $fudge = $^O eq "MSWin32" ? 0.1 : 0;
+# time() however doesn't return fractional values, so the observed
+# delay may be 1 second short.
+($sleep,$fudge) = (4,1) if $^O eq "MSWin32";
 
 my $t = time;
 select(undef, undef, undef, $sleep);