X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fpathnames.impure.lisp;h=c85df934a49421668302ff5bc46e1e51c846a2e5;hb=a18f0a95bc9a457e4d2d00c702b746f29c2662b1;hp=703fdb025ec3ce4f6e1b7bb35e38b674fad70eb5;hpb=a8f2656f635d81ec326303f47e0612fb1f35fd91;p=sbcl.git diff --git a/tests/pathnames.impure.lisp b/tests/pathnames.impure.lisp index 703fdb0..c85df93 100644 --- a/tests/pathnames.impure.lisp +++ b/tests/pathnames.impure.lisp @@ -16,10 +16,7 @@ (in-package "CL-USER") -(eval-when (:compile-toplevel :load-toplevel :execute) - (defmacro grab-condition (&body body) - `(nth-value 1 - (ignore-errors ,@body)))) +(load "assertoid.lisp") (setf (logical-pathname-translations "demo0") '(("**;*.*.*" "/tmp/"))) @@ -57,7 +54,7 @@ ;;; handle the following case exactly (otherwise we get an error: ;;; "#'IDENTITY CALLED WITH 2 ARGS." (setf (logical-pathname-translations "demo2") - '(("test;**;*.*" "/tmp/demo2/test/"))) + '(("test;**;*.*" "/tmp/demo2/test"))) (enough-namestring "demo2:test;foo.lisp") ;;; When a pathname comes from a logical host, it should be in upper @@ -90,6 +87,10 @@ (translate-logical-pathname "FOO:"))) +;;; ANSI says PARSE-NAMESTRING returns TYPE-ERROR on host mismatch. +(let ((cond (grab-condition (parse-namestring "foo:jeamland" "demo2")))) + (assert (typep cond 'type-error))) + ;;; ANSI, in its wisdom, specifies that it's an error (specifically a ;;; TYPE-ERROR) to query the system about the translations of a string ;;; which doesn't have any translations. It's not clear why we don't @@ -97,13 +98,18 @@ (let ((cond (grab-condition (logical-pathname-translations "unregistered-host")))) (assert (typep cond 'type-error))) -;;; examples from CLHS: Section 19.4, Logical Pathname Translations -;;; (sometimes converted to the Un*x way of things) +;;; FIXME: A comment on this section up to sbcl-0.6.11.30 or so said +;;; examples from CLHS: Section 19.4, LOGICAL-PATHNAME-TRANSLATIONS +;;; (sometimes converted to the Un*x way of things) +;;; but when I looked it up I didn't see the connection. Presumably +;;; there's some code in this section which should be attributed +;;; to something in the ANSI spec, but I don't know what code it is +;;; or what section of the specification has the related code. (setf (logical-pathname-translations "test0") '(("**;*.*.*" "/library/foo/**/"))) (assert (equal (namestring (translate-logical-pathname - "test0:foo;bar;baz;mum.quux.3")) - "/library/foo/foo/bar/baz/mum.quux.3")) + "test0:foo;bar;baz;mum.quux")) + "/library/foo/foo/bar/baz/mum.quux")) (setf (logical-pathname-translations "prog") '(("RELEASED;*.*.*" "MY-UNIX:/sys/bin/my-prog/") ("RELEASED;*;*.*.*" "MY-UNIX:/sys/bin/my-prog/*/") @@ -121,6 +127,12 @@ "prog:code;documentation.lisp")) "/lib/prog/docum.lisp")) +;;; ANSI section 19.3.1.1.5 specifies that translation to a filesystem +;;; which doesn't have versions should ignore the version slot. CMU CL +;;; didn't ignore this as it should, but we do. +(assert (equal (namestring (translate-logical-pathname + "test0:foo;bar;baz;mum.quux.3")) + "/library/foo/foo/bar/baz/mum.quux")) + ;;; success (quit :unix-status 104) -(in-package :cl-user)