X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-posix%2Fposix-tests.lisp;h=5c4d01ca24b32a8702bc620733234d0013263470;hb=9fb8bf2eb2c91cbda313edaa3362ff8b221ab81d;hp=71f218c7461ea29666279828e7dfd5179068b3b6;hpb=30918f91c144b51c5c204427b2fd70d49b8d1407;p=sbcl.git diff --git a/contrib/sb-posix/posix-tests.lisp b/contrib/sb-posix/posix-tests.lisp index 71f218c..5c4d01c 100644 --- a/contrib/sb-posix/posix-tests.lisp +++ b/contrib/sb-posix/posix-tests.lisp @@ -428,6 +428,71 @@ sb-posix::o-nonblock))) t) +(deftest fcntl.flock.1 + (locally (declare (sb-ext:muffle-conditions sb-ext:compiler-note)) + (let ((flock (make-instance 'sb-posix:flock + :type sb-posix:f-wrlck + :whence sb-posix:seek-set + :start 0 :len 10)) + (pathname "fcntl.flock.1") + kid-status) + (catch 'test + (with-open-file (f pathname :direction :output) + (write-line "1234567890" f) + (assert (zerop (sb-posix:fcntl f sb-posix:f-setlk flock))) + (let ((pid (sb-posix:fork))) + (if (zerop pid) + (progn + (multiple-value-bind (nope error) + (ignore-errors (sb-posix:fcntl f sb-posix:f-setlk flock)) + (sb-ext:quit + :unix-status + (cond ((not (null nope)) 1) + ((= (sb-posix:syscall-errno error) sb-posix:eagain) + 42) + (t 86)) + :recklessly-p t #| don't delete the file |#))) + (progn + (setf kid-status + (sb-posix:wexitstatus + (nth-value + 1 (sb-posix:waitpid pid 0)))) + (throw 'test nil)))))) + kid-status)) + 42) + + +(deftest fcntl.flock.2 + (locally (declare (sb-ext:muffle-conditions sb-ext:compiler-note)) + (let ((flock (make-instance 'sb-posix:flock + :type sb-posix:f-wrlck + :whence sb-posix:seek-set + :start 0 :len 10)) + (pathname "fcntl.flock.2") + kid-status) + (catch 'test + (with-open-file (f pathname :direction :output) + (write-line "1234567890" f) + (assert (zerop (sb-posix:fcntl f sb-posix:f-setlk flock))) + (let ((ppid (sb-posix:getpid)) + (pid (sb-posix:fork))) + (if (zerop pid) + (let ((r (sb-posix:fcntl f sb-posix:f-getlk flock))) + (sb-ext:quit + :unix-status + (cond ((not (zerop r)) 1) + ((= (sb-posix:flock-pid flock) ppid) 42) + (t 86)) + :recklessly-p t #| don't delete the file |#)) + (progn + (setf kid-status + (sb-posix:wexitstatus + (nth-value + 1 (sb-posix:waitpid pid 0)))) + (throw 'test nil)))))) + kid-status)) + 42) + (deftest opendir.1 (let ((dir (sb-posix:opendir "/"))) (unwind-protect (sb-alien:null-alien dir) @@ -690,7 +755,7 @@ (multiple-value-bind (fd temp) (sb-posix:mkstemp (make-pathname :name "mkstemp-1" - :type "XXX" + :type "XXXXXX" :defaults *test-directory*)) (let ((pathname (sb-ext:parse-native-namestring temp))) (unwind-protect @@ -704,7 +769,7 @@ (sb-ext:parse-native-namestring (sb-posix:mkdtemp (make-pathname :name "mkdtemp-1" - :type "XXX" + :type "XXXXXX" :defaults *test-directory*)) nil *default-pathname-defaults* @@ -721,7 +786,7 @@ #-win32 (deftest mktemp.1 (let ((pathname (sb-ext:parse-native-namestring - (sb-posix:mktemp #p"mktemp.XXX")))) + (sb-posix:mktemp #p"mktemp.XXXXXX")))) (values (equal "mktemp" (pathname-name pathname)) - (not (equal "XXX" (pathname-type pathname))))) + (not (equal "XXXXXX" (pathname-type pathname))))) t t)