]> granicus.if.org Git - php/commitdiff
Fix bug #61517 random test failure - ext/standard/tests/misc/time_sleep_until_basic...
authorAnatoliy Belsky <ab@php.net>
Tue, 3 Apr 2012 09:04:52 +0000 (11:04 +0200)
committerAnatoliy Belsky <ab@php.net>
Tue, 3 Apr 2012 09:04:52 +0000 (11:04 +0200)
ext/standard/tests/misc/time_sleep_until_basic.phpt

index 9ae912881aba7061bf60731eb14e9300fbcb52c2..05cc0e6de4cff365ae08425100aa3d07a3f86999 100644 (file)
@@ -13,7 +13,19 @@ Michele Orselli mo@ideato.it
 <?php
   $time = microtime(true) + 2;
   var_dump(time_sleep_until( (int)$time ));
-  var_dump(microtime(true) >= (int)$time);
+  $now = microtime(true);
+  if(substr(PHP_OS, 0, 3) == 'WIN' ) {
+    // on windows, time_sleep_until has millisecond accuracy while microtime() is accurate
+    // to 10th of a second. this means there can be up to a .9 millisecond difference
+    // which will fail this test. this test randomly fails on Windows and this is the cause.
+    //
+    // fix: round to nearest millisecond 
+    // passes for up to .5 milliseconds less, fails for more than .5 milliseconds
+    // should be fine since time_sleep_until() on Windows is accurate to the
+    // millisecond(.5 rounded up is 1 millisecond)
+    $now = round($now, 3);
+  }
+  var_dump($now >= (int)$time);
 ?>
 --EXPECT--
 bool(true)