1.0.31.23: OAOOize external-format support
[sbcl.git] / tests / signals.impure.lisp
index 16b9767..675fd8a 100644 (file)
           (princ '*)
           (force-output))
     (terpri)))
+
+(require :sb-posix)
+
+(with-test (:name (:signal :errno))
+  (let* (saved-errno
+         (returning nil)
+         (timer (make-timer (lambda ()
+                              (sb-unix:unix-open "~!@#$%^&*[]()/\\" 0 0)
+                              (assert (= sb-unix:enoent
+                                         (sb-unix::get-errno)))
+                              (setq returning t)))))
+    (schedule-timer timer 0.2)
+    ;; Fail and set errno.
+    (sb-unix:nanosleep -1 -1)
+    (setq saved-errno (sb-unix::get-errno))
+    (assert (= saved-errno sb-posix:einval))
+    ;; Wait, but not with sleep because that will be interrupted and
+    ;; we get EINTR.
+    (loop until returning)
+    (loop repeat 1000000000)
+    (assert (= saved-errno (sb-unix::get-errno)))))