X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fpathnames.impure.lisp;h=c81cb5a221e4eaa02c1c9c8ec017148a93b0f58f;hb=71766d9db05e93567cb7e829abfc675c3cb895c9;hp=86bf11bf4c6a0e7423d5067b5890bc1f8bf36f36;hpb=5a7debb7fa6c532ffc4ff41f61352336d9a93697;p=sbcl.git diff --git a/tests/pathnames.impure.lisp b/tests/pathnames.impure.lisp index 86bf11b..c81cb5a 100644 --- a/tests/pathnames.impure.lisp +++ b/tests/pathnames.impure.lisp @@ -375,5 +375,57 @@ (p2 (make-pathname :directory '(:relative :back "foo")))) (assert (equal (merge-pathnames p1 p2) (make-pathname :directory '(:relative :back "foo" "bar"))))) + +;;; construct native namestrings even if the directory is empty (means +;;; that same as if (:relative)) +(assert (equal (sb-ext:native-namestring (make-pathname :directory '(:relative) + :name "foo" + :type "txt")) + (sb-ext:native-namestring (let ((p (make-pathname :directory nil + :name "foo" + :type "txt"))) + (assert (not (pathname-directory p))) + p)))) + +;;; reported by Richard Kreuter: PATHNAME and MERGE-PATHNAMES used to +;;; be unsafely-flushable. Since they are known to return non-nil values +;;; only, the test-node of the IF is flushed, and since the function +;;; is unsafely-flushable, out it goes, and bad pathname designators +;;; breeze through. +;;; +;;; These tests rely on using a stream that appears as a file-stream +;;; but isn't a valid pathname-designator. +(assert (eq :false + (if (ignore-errors (pathname sb-sys::*tty*)) :true :false))) +(assert (eq :false + (if (ignore-errors (merge-pathnames sb-sys::*tty*)) :true :false))) + +;;; This used to return "quux/bar.lisp" +(assert (equal #p"quux/bar.fasl" + (let ((*default-pathname-defaults* #p"quux/")) + (compile-file-pathname "foo.lisp" :output-file "bar")))) +(assert (equal #p"quux/bar.fasl" + (let ((*default-pathname-defaults* #p"quux/")) + (compile-file-pathname "bar.lisp")))) + +(enough-namestring #p".a*") + +(assert (eq 99 + (pathname-version + (translate-pathname + (make-pathname :name "foo" :type "bar" :version 99) + (make-pathname :name :wild :type :wild :version :wild) + (make-pathname :name :wild :type :wild :version :wild))))) + +(assert (eq 99 + (pathname-version + (translate-pathname + (make-pathname :name "foo" :type "bar" :version 99) + (make-pathname :name :wild :type :wild :version :wild) + (make-pathname :name :wild :type :wild :version nil))))) + +;;; enough-namestring relative to root +(assert (equal "foo" (enough-namestring "/foo" "/"))) + ;;;; success