X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fsignals.impure.lisp;h=716580c387031f4d11cbac16bcb7cf49af402d9b;hb=43c6634142a96e1d1bab2efe1a39cd8234903c41;hp=7be8bac8af9449ec92f87af7c251ad9eb1a4ca58;hpb=2bb123efd9f1566b2bff388b55d57698a69b69ba;p=sbcl.git diff --git a/tests/signals.impure.lisp b/tests/signals.impure.lisp index 7be8bac..716580c 100644 --- a/tests/signals.impure.lisp +++ b/tests/signals.impure.lisp @@ -38,7 +38,14 @@ (require :sb-posix) -(with-test (:name (:signal :errno)) +(with-test (:name (:signal :errno) + ;; This test asserts that nanosleep behaves correctly + ;; for invalid values and sets EINVAL. Well, we have + ;; nanosleep on Windows, but it depends on the caller + ;; (namely SLEEP) to produce known-good arguments, and + ;; even if we wanted to check argument validity, + ;; integration with `errno' is not to be expected. + :skipped-on :win32) (let* (saved-errno (returning nil) (timer (make-timer (lambda () @@ -57,7 +64,10 @@ (loop repeat 1000000000) (assert (= saved-errno (sb-unix::get-errno))))) -(with-test (:name :handle-interactive-interrupt) +(with-test (:name :handle-interactive-interrupt + ;; It is desirable to support C-c on Windows, but SIGINT + ;; is not the mechanism to use on this platform. + :skipped-on :win32) (assert (eq :condition (handler-case (sb-thread::kill-safely @@ -65,3 +75,19 @@ sb-unix:sigint) (sb-sys:interactive-interrupt () :condition))))) + +(with-test (:name :bug-640516) + ;; On Darwin interrupting a SLEEP so that it took longer than + ;; the requested amount caused it to hang. + (assert + (handler-case + (sb-ext:with-timeout 10 + (let (to) + (handler-bind ((sb-ext:timeout (lambda (c) + (unless to + (setf to t) + (sleep 2) + (continue c))))) + (sb-ext:with-timeout 0.1 (sleep 1) t)))) + (sb-ext:timeout () + nil))))