X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fpackages.impure.lisp;h=ce498d67d5413aac7ca1e72c46f266a5e2d2641a;hb=e66288cd5588b336b79a7e19f1c884e4e3263d53;hp=c1910eea13e84bacfca1243500eabfd6433e5b0d;hpb=f4b2df30d28c890bda36fdeea2c2243de09982eb;p=sbcl.git diff --git a/tests/packages.impure.lisp b/tests/packages.impure.lisp index c1910ee..ce498d6 100644 --- a/tests/packages.impure.lisp +++ b/tests/packages.impure.lisp @@ -6,7 +6,7 @@ ;;;; While most of SBCL is derived from the CMU CL system, the test ;;;; files (like this one) were written from scratch after the fork ;;;; from CMU CL. -;;;; +;;;; ;;;; This software is in the public domain and is provided with ;;;; absolutely no warranty. See the COPYING and CREDITS files for ;;;; more information. @@ -17,4 +17,48 @@ (assert (eq *foo* (find-package ""))) (assert (delete-package "")) -(sb-ext:quit :unix-status 104) +(handler-case + (export :foo) + (package-error (c) (princ c)) + (:no-error (&rest args) (error "(EXPORT :FOO) returned ~S" args))) + +(make-package "FOO") +(assert (shadow #\a :foo)) + +(defpackage :PACKAGE-DESIGNATOR-1 (:use #.(find-package :cl))) + +(defpackage :PACKAGE-DESIGNATOR-2 + (:import-from #.(find-package :cl) "+")) + +(defpackage "EXAMPLE-INDIRECT" + (:import-from "CL" "+")) + +(defpackage "EXAMPLE-PACKAGE" + (:shadow "CAR") + (:shadowing-import-from "CL" "CAAR") + (:use) + (:import-from "CL" "CDR") + (:import-from "EXAMPLE-INDIRECT" "+") + (:export "CAR" "CDR" "EXAMPLE")) + +(flet ((check-symbol (name expected-status expected-home-name) + (multiple-value-bind (symbol status) + (find-symbol name "EXAMPLE-PACKAGE") + (let ((home (symbol-package symbol)) + (expected-home (find-package expected-home-name))) + (assert (eql home expected-home)) + (assert (eql status expected-status)))))) + (check-symbol "CAR" :external "EXAMPLE-PACKAGE") + (check-symbol "CDR" :external "CL") + (check-symbol "EXAMPLE" :external "EXAMPLE-PACKAGE") + (check-symbol "CAAR" :internal "CL") + (check-symbol "+" :internal "CL") + (check-symbol "CDDR" nil "CL")) + +(defpackage "TEST-ORIGINAL" (:nicknames "A-NICKNAME")) + +(assert (raises-error? (defpackage "A-NICKNAME"))) + +(assert (eql (find-package "A-NICKNAME") + (find-package "TEST-ORIGINAL"))) +