slep-non-consing test: prevent from sleeping too much.
authorStas Boukarev <stassats@gmail.com>
Sat, 31 Aug 2013 06:17:18 +0000 (10:17 +0400)
committerStas Boukarev <stassats@gmail.com>
Sat, 31 Aug 2013 06:17:18 +0000 (10:17 +0400)
Some platforms can't sleep for short amounts of time, add a
sb-ext:with-timeout around it and don't report it as a failure, since
there's basically nothing that can be fixed in such cases.

tests/interface.pure.lisp

index 2612bf3..0979456 100644 (file)
 ;;; SLEEP should not cons except on 32-bit platforms when
 ;;; (> (mod seconds 1) (* most-positive-fixnum 1e-9))
 (with-test (:name (sleep :non-consing) :fails-on :win32)
-  (ctu:assert-no-consing (sleep 0.00001s0))
-  (locally (declare (notinline sleep))
-    (ctu:assert-no-consing (sleep 0.00001s0))
-    (ctu:assert-no-consing (sleep 0.00001d0))
-    (ctu:assert-no-consing (sleep 1/100000003))))
+  (handler-case (sb-ext:with-timeout 5
+                  (ctu:assert-no-consing (sleep 0.00001s0))
+                  (locally (declare (notinline sleep))
+                    (ctu:assert-no-consing (sleep 0.00001s0))
+                    (ctu:assert-no-consing (sleep 0.00001d0))
+                    (ctu:assert-no-consing (sleep 1/100000003))))
+    (timeout ())))
 
 ;;; Changes to make SLEEP cons less led to SLEEP
 ;;; not sleeping at all on 32-bit platforms when