X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-posix%2Fposix-tests.lisp;h=6cdc955205ab0a79d74d270af981b1e8f5cad7d2;hb=ecfd159f29d31d2cc08d4e5598346c04c9387636;hp=d87102f3c9d99a9893e789d910c4a2012940192f;hpb=f849f46aa175919bd46a32d9305b1162f9d0d2f5;p=sbcl.git diff --git a/contrib/sb-posix/posix-tests.lisp b/contrib/sb-posix/posix-tests.lisp index d87102f..6cdc955 100644 --- a/contrib/sb-posix/posix-tests.lisp +++ b/contrib/sb-posix/posix-tests.lisp @@ -169,17 +169,21 @@ (deftest rmdir.error.3 (handler-case - (sb-posix:rmdir #-win32 "/" #+win32 "C:/") + (sb-posix:rmdir #-win32 "/" #+win32 (sb-ext:posix-getenv "windir")) (sb-posix:syscall-error (c) - (sb-posix:syscall-errno c))) - #+darwin - #.sb-posix:eisdir - #+win32 - #.sb-posix::eacces - #+sunos - #.sb-posix::einval - #-(or darwin win32 sunos) - #.sb-posix::ebusy) + (typep + (sb-posix:syscall-errno c) + '(member + #+darwin + #.sb-posix:eisdir + #+win32 + #.sb-posix::eacces + #+win32 + #.sb-posix::enotempty + #+sunos + #.sb-posix::einval + #-(or darwin win32 sunos) + #.sb-posix::ebusy)))) t) (deftest rmdir.error.4 (let* ((dir (ensure-directories-exist @@ -276,14 +280,15 @@ #+win32 (deftest stat.5 - (let* ((stat-1 (sb-posix:stat "/")) - (mode-1 (sb-posix:stat-mode stat-1)) - (stat-2 (sb-posix:stat "C:\\pagefile.sys" - stat-1)) - (mode-2 (sb-posix:stat-mode stat-2))) - (values - (eq stat-1 stat-2) - (/= mode-1 mode-2))) + (let ((f (namestring (merge-pathnames "some.file" *test-directory*)))) + (close (open f :if-exists :append :if-does-not-exist :create)) + (let* ((stat-1 (sb-posix:stat "/")) + (mode-1 (sb-posix:stat-mode stat-1)) + (stat-2 (sb-posix:stat f stat-1)) + (mode-2 (sb-posix:stat-mode stat-2))) + (values + (eq stat-1 stat-2) + (/= mode-1 mode-2)))) t t) @@ -473,7 +478,7 @@ 42) -#-win32 +#-(or win32 netbsd) (deftest fcntl.flock.2 (locally (declare (sb-ext:muffle-conditions sb-ext:compiler-note)) (let ((flock (make-instance 'sb-posix:flock @@ -505,6 +510,24 @@ kid-status)) 42) +(deftest read.1 + (progn + (with-open-file (ouf (merge-pathnames "read-test.txt" *test-directory*) + :direction :output + :if-exists :supersede + :if-does-not-exist :create) + (write-string "foo" ouf)) + (let ((fd (sb-posix:open (merge-pathnames "read-test.txt" *test-directory*) sb-posix:o-rdonly))) + (unwind-protect + (let ((buf (make-array 10 :element-type '(unsigned-byte 8)))) + (values + (sb-posix:read fd (sb-sys:vector-sap buf) 10) + (code-char (aref buf 0)) + (code-char (aref buf 1)) + (code-char (aref buf 2)))) + (sb-posix:close fd)))) + 3 #\f #\o #\o) + (deftest opendir.1 (let ((dir (sb-posix:opendir "/"))) (unwind-protect (sb-alien:null-alien dir) @@ -546,6 +569,23 @@ (sb-posix:closedir dir))) t) + +(deftest write.1 + (progn + (let ((fd (sb-posix:open (merge-pathnames "write-test.txt" *test-directory*) + (logior sb-posix:o-creat sb-posix:o-wronly) + (logior sb-posix:s-irusr sb-posix:s-iwusr))) + (retval nil)) + (unwind-protect + (let ((buf (coerce "foo" 'simple-base-string))) + (setf retval (sb-posix:write fd (sb-sys:vector-sap buf) 3))) + (sb-posix:close fd)) + + (with-open-file (inf (merge-pathnames "write-test.txt" *test-directory*) + :direction :input) + (values retval (read-line inf))))) + 3 "foo") + #-win32 (deftest pwent.1 ;; make sure that we found something