X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-posix%2Fposix-tests.lisp;h=78f99ba58259d774e96f594250b3a7074c2ec28a;hb=4fd24714c780827eec742db55297940ed7160ea7;hp=2a97c4c44341821bf27b17000814b3a3ca469a39;hpb=b6ef430541de83d0adf4378ba2d814a1136c9d68;p=sbcl.git diff --git a/contrib/sb-posix/posix-tests.lisp b/contrib/sb-posix/posix-tests.lisp index 2a97c4c..78f99ba 100644 --- a/contrib/sb-posix/posix-tests.lisp +++ b/contrib/sb-posix/posix-tests.lisp @@ -108,10 +108,12 @@ (sb-posix:mkdir #-win32 "/" #+win32 "C:/" 0) (sb-posix:syscall-error (c) (sb-posix:syscall-errno c))) - #-win32 - #.sb-posix::eexist + #+darwin + #.sb-posix:eisdir #+win32 - #.sb-posix:eacces) + #.sb-posix:eacces + #-(or darwin win32) + #.sb-posix::eexist) (define-eacces-test mkdir.error.3 (let* ((dir (merge-pathnames @@ -167,10 +169,12 @@ (sb-posix:rmdir #-win32 "/" #+win32 "C:/") (sb-posix:syscall-error (c) (sb-posix:syscall-errno c))) - #-win32 - #.sb-posix::ebusy + #+darwin + #.sb-posix:eisdir #+win32 - #.sb-posix::eacces) + #.sb-posix::eacces + #-(or darwin win32) + #.sb-posix::ebusy) (deftest rmdir.error.4 (let* ((dir (ensure-directories-exist @@ -405,6 +409,7 @@ (ignore-errors (sb-posix:unlink name)))) nil) +#-hpux ; fix: cant handle c-vargs (deftest open.error.1 (handler-case (sb-posix:open *test-directory* sb-posix::o-wronly) (sb-posix:syscall-error (c) @@ -414,21 +419,21 @@ #+win32 #.sb-posix:eacces) -#-(or (and x86-64 linux) win32) +#-(or (and x86-64 (or linux sunos)) win32) (deftest fcntl.1 (let ((fd (sb-posix:open "/dev/null" sb-posix::o-nonblock))) (= (sb-posix:fcntl fd sb-posix::f-getfl) sb-posix::o-nonblock)) t) ;; On AMD64/Linux O_LARGEFILE is always set, even though the whole ;; flag makes no sense. -#+(and x86-64 linux) +#+(and x86-64 (or linux sunos)) (deftest fcntl.1 (let ((fd (sb-posix:open "/dev/null" sb-posix::o-nonblock))) (/= 0 (logand (sb-posix:fcntl fd sb-posix::f-getfl) sb-posix::o-nonblock))) t) -#-win32 +#-(or hpux win32) ; fix: cant handle c-vargs (deftest fcntl.flock.1 (locally (declare (sb-ext:muffle-conditions sb-ext:compiler-note)) (let ((flock (make-instance 'sb-posix:flock @@ -514,6 +519,7 @@ (sb-posix:closedir dir))) t) +#-darwin (deftest readdir/dirent-name (let ((dir (sb-posix:opendir *current-directory*))) (unwind-protect @@ -643,6 +649,7 @@ ;; Same thing, but with a very long link target (which doesn't have ;; to exist). This tests the array adjustment in the wrapper, ;; provided that the target's length is long enough. + #-hpux ; arg2 to readlink is 80, and arg0 is larger than that (deftest readlink.2 (let ((target-pathname (make-pathname :name (make-string 255 :initial-element #\a) @@ -765,7 +772,10 @@ (delete-file temp)))) t "mkstemp-1") -#-win32 +;#-(or win32 sunos hpux) +;;;; mkdtemp is unimplemented on at least Solaris 10 +#-(or win32 hpux) +;;; But it is implemented on OpenSolaris 2008.11 (deftest mkdtemp.1 (let ((pathname (sb-ext:parse-native-namestring @@ -814,3 +824,31 @@ (values (integerp fd) (pathname-name pathname)) (delete-file temp))))) t "mkstemp-1") + +(deftest envstuff + (let ((name1 "ASLIFJLSDKFJKAHGSDKLJH") + (name2 "KJHFKLJDSHIUYHBSDNFCBH")) + (values (sb-posix:getenv name1) + (sb-posix:getenv name1) + (progn + (sb-posix:putenv (concatenate 'string name1 "=name1,test1")) + (sb-ext:gc :full t) + (sb-posix:getenv name1)) + (progn + (sb-posix:setenv name1 "name1,test2" 0) + (sb-ext:gc :full t) + (sb-posix:getenv name1)) + (progn + (sb-posix:setenv name2 "name2,test1" 0) + (sb-ext:gc :full t) + (sb-posix:getenv name2)) + (progn + (sb-posix:setenv name2 "name2,test2" 1) + (sb-ext:gc :full t) + (sb-posix:getenv name2)))) + nil + nil + "name1,test1" + "name1,test1" + "name2,test1" + "name2,test2")