X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fstream.impure.lisp;h=fd3f8df30315116c77afc92af6ce435a19b0daaf;hb=ab5427d31da2bd95805cccc8e47b8f43d3dd606d;hp=60c00c52f8d7cf6b3dc7721d2b40d8e52c3eca0b;hpb=0a15b6bbf9d5d3a64b5ac08bb96b6e5ec221d2ae;p=sbcl.git diff --git a/tests/stream.impure.lisp b/tests/stream.impure.lisp index 60c00c5..fd3f8df 100644 --- a/tests/stream.impure.lisp +++ b/tests/stream.impure.lisp @@ -610,8 +610,7 @@ #-win32 (require :sb-posix) -#-win32 -(with-test (:name :interrupt-open) +(with-test (:name :interrupt-open :skipped-on :win32) (let ((fifo nil) (to 0)) (unwind-protect @@ -641,8 +640,7 @@ #-win32 (require :sb-posix) -#-win32 -(with-test (:name :overeager-character-buffering) +(with-test (:name :overeager-character-buffering :skipped-on :win32) (let ((fifo nil) (proc nil)) (maphash @@ -668,6 +666,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 +676,60 @@ (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))))) + +(with-test (:name :bug-561642) + (let ((p "bug-561642-test.tmp")) + (unwind-protect + (progn + (with-open-file (f p + :if-exists :supersede + :if-does-not-exist :create + :direction :output) + (write-line "FOOBAR" f)) + (with-open-file (f p + :if-exists :append + :direction :output) + (let ((p0 (file-position f)) + (p1 (progn + (write-char #\newline f) + (file-position f))) + (p2 (progn + (write-char #\newline f) + (finish-output f) + (file-position f)))) + (assert (eql 7 p0)) + (assert (eql 8 p1)) + (assert (eql 9 p2))))) + (ignore-errors (delete-file p))))) + ;;; success