X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=tests%2Fstream.impure.lisp;h=0071bccdc08bc1d1177c02132015c4d09ed75976;hb=83659744f9caa97aa83eb562d872b1c0127403c0;hp=60c00c52f8d7cf6b3dc7721d2b40d8e52c3eca0b;hpb=0a15b6bbf9d5d3a64b5ac08bb96b6e5ec221d2ae;p=sbcl.git diff --git a/tests/stream.impure.lisp b/tests/stream.impure.lisp index 60c00c5..0071bcc 100644 --- a/tests/stream.impure.lisp +++ b/tests/stream.impure.lisp @@ -668,6 +668,9 @@ (with-open-file (f fifo :direction :input :external-format format) (assert (equal "foobar" (read-line f))))) (when proc + (ignore-errors + (close (process-input proc) :abort t) + (process-wait proc)) (ignore-errors (process-close proc)) (setf proc nil)) (when fifo @@ -675,4 +678,35 @@ (setf fifo nil)))) sb-impl::*external-formats*))) +(with-test (:name :bug-657183) + (let ((name (merge-pathnames "stream-impure.temp-test")) + (text '(#\GREEK_SMALL_LETTER_LAMDA + #\JAPANESE_BANK_SYMBOL + #\Space + #\HEAVY_BLACK_HEART)) + (positions '(2 5 6 9)) + (sb-impl::*default-external-format* :utf-8)) + (unwind-protect + (progn + (with-open-file (f name :external-format :default :direction :output + :if-exists :supersede) + (assert (eql 0 (file-position f))) + (mapc (lambda (char pos) + (write-char char f) + (assert (eql pos (file-position f)))) + text + positions)) + (with-open-file (f name :external-format :default :direction :input) + (assert (eql 0 (file-position f))) + (assert (eql (pop text) (read-char f))) + (assert (eql (file-position f) 2)) + (assert (eql (pop text) (read-char f))) + (assert (eql (file-position f) 5)) + (assert (eql (pop text) (read-char f))) + (assert (eql (file-position f) 6)) + (assert (eql (pop text) (read-char f))) + (assert (eql (file-position f) 9)) + (assert (eql (file-length f) 9)))) + (ignore-errors (delete-file name))))) + ;;; success