X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fstream.impure.lisp;h=adf3986e7ba077b0d97cdf531d00b4b5c22ecf81;hb=b2b5fc7797a2c34d904e2a6e25d9ff357d915ac6;hp=3540257ab1d54d3c6a8db52e5817ae70b852aac1;hpb=1f26211fbddc8e284849b0944a4309a50046ce40;p=sbcl.git diff --git a/tests/stream.impure.lisp b/tests/stream.impure.lisp index 3540257..adf3986 100644 --- a/tests/stream.impure.lisp +++ b/tests/stream.impure.lisp @@ -577,5 +577,34 @@ (assert (let ((buffer (make-array 10 :element-type '(unsigned-byte 8)))) (read-sequence buffer s)))) (delete-file pathname)) + +(with-test (:name :delete-file-on-streams) + (with-open-file (f "delete-file-on-stream-test.tmp" + :direction :io) + (delete-file f) + #-win32 + (progn + (write-line "still open" f) + (file-position f :start) + (assert (equal "still open" (read-line f))))) + (assert (not (probe-file "delete-file-on-stream-test.tmp")))) +;;; READ-CHAR-NO-HANG on bivalent streams (as returned by RUN-PROGRAM) +;;; was wrong. CSR managed to promote the wrongness to all streams in +;;; the 1.0.32.x series, breaking slime instantly. +(with-test (:name :read-char-no-hang-after-unread-char) + (let* ((process (run-program "/bin/sh" '("-c" "echo a && sleep 10") + :output :stream :wait nil)) + (stream (process-output process)) + (char (read-char stream))) + (assert (char= char #\a)) + (unread-char char stream) + (assert (char= (read-char stream) #\a)) + (assert (char= (read-char stream) #\Newline)) + (let ((time (get-universal-time))) + ;; no input, not yet known to be at EOF: should return + ;; immediately + (read-char-no-hang stream) + (assert (< (- (get-universal-time) time) 2))))) + ;;; success