]> git.vpit.fr Git - perl/modules/VPIT-TestHelpers.git/commitdiff
Make sure the sleep() fallback implementation sleeps long enough
authorVincent Pit <vince@profvince.com>
Mon, 20 Apr 2015 14:27:36 +0000 (11:27 -0300)
committerVincent Pit <vince@profvince.com>
Mon, 20 Apr 2015 14:27:36 +0000 (11:27 -0300)
If the users asks for 500ms, it should sleep at least one second.

lib/VPIT/TestHelpers.pm
t/50-usleep.t

index bdc3a4c465d3e8bc7c1f0cf2898beb3b901dd670..b7b7635dafc634647b02a13f9492925d0f7ceae4 100644 (file)
@@ -740,8 +740,9 @@ sub init_usleep {
   'sleep' => sub {
    diag 'Using sleep()-based fallback usleep()';
    return sub ($) {
-    my $s = int($_[0] / 1e6);
-    my $t = sleep $s;
+    my $ms = int $_[0];
+    my $s  = int($ms / 1e6) + ($ms % 1e6 == 0 ? 0 : 1);
+    my $t  = sleep $s;
     return $t * 1e6;
    };
   },
index 15592ec9b12ea918abe0d9c91eb36f5e8a4d95d3..217231d19cb9fb2b8864f700bdada1adab45b68a 100644 (file)
@@ -9,6 +9,8 @@ use Test::More;
 
 my @impls = qw<Time::HiRes select sleep>;
 
+my $duration = 1e5;
+
 for my $impl (@impls) {
  my $desc = "$impl-based usleep()";
  {
@@ -26,8 +28,8 @@ for my $impl (@impls) {
   eval 'defined &main::usleep';
  };
  ok $has_usleep, "$desc was imported";
- my $ret = usleep(1e6);
- cmp_ok $ret, '>=', 1e6, "$desc did sleep";
+ my $ret = usleep($duration);
+ cmp_ok $ret, '>=', $duration, "$desc did sleep";
  diag "$desc actually slept $ret microseconds";
 }