X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Finterface.impure.lisp;h=175edcec9fd52935c61e8416e5fd9b3e4c436758;hb=911a74c40f7bc0ce13dfd5fa96ce83188d356fc3;hp=ac4776ab51bd2809c8dba6b11bbe1501ba65a7af;hpb=d5ec4e5681e0dbe44b3fbd5f35df9f9bde5ee337;p=sbcl.git diff --git a/tests/interface.impure.lisp b/tests/interface.impure.lisp index ac4776a..175edce 100644 --- a/tests/interface.impure.lisp +++ b/tests/interface.impure.lisp @@ -232,22 +232,21 @@ "bar" (incf x y))) -(with-test (:name (documentation closure)) +(with-test (:name (documentation :closure)) (assert (string= (documentation 'docfoo 'function) "bar")) - (assert (string= (documentation #'docfoo t) "bar")) (assert (string= (setf (documentation 'docfoo 'function) "baz") "baz")) (assert (string= (documentation 'docfoo 'function) "baz")) - (assert (string= (documentation #'docfoo t) "bar")) + (assert (string= (documentation #'docfoo t) "baz")) (assert (string= (setf (documentation #'docfoo t) "zot") "zot")) (assert (string= (documentation #'docfoo t) "zot")) - (assert (string= (documentation 'docfoo 'function) "baz")) + (assert (string= (documentation 'docfoo 'function) "zot")) (assert (not (setf (documentation 'docfoo 'function) nil))) - (assert (string= (documentation 'docfoo 'function) "zot"))) + (assert (not (documentation 'docfoo 'function)))) -(with-test (:name (documentation built-in-macro) :skipped-on '(not :sb-doc)) +(with-test (:name (documentation :built-in-macro) :skipped-on '(not :sb-doc)) (assert (documentation 'trace 'function))) -(with-test (:name (documentation built-in-function) :skipped-on '(not :sb-doc)) +(with-test (:name (documentation :built-in-function) :skipped-on '(not :sb-doc)) (assert (documentation 'cons 'function))) (with-test (:name :describe-generic-function-with-assumed-type) @@ -264,5 +263,61 @@ (assert (equal "foo" (documentation 'bug-643958-test 'function))) (setf (documentation 'bug-643958-test 'function) "bar") (assert (equal "bar" (documentation 'bug-643958-test 'function)))) + +(defclass cannot-print-this () + ()) +(defmethod print-object ((oops cannot-print-this) stream) + (error "No go!")) +(with-test (:name :describe-suppresses-print-errors) + (handler-bind ((error #'continue)) + (with-output-to-string (s) + (describe (make-instance 'cannot-print-this) s)))) +(with-test (:name :backtrace-suppresses-print-errors) + (handler-bind ((error #'continue)) + (with-output-to-string (s) + (labels ((foo (n x) + (when (plusp n) + (foo (1- n) x)) + (when (zerop n) + (sb-debug:backtrace 100 s)))) + (foo 100 (make-instance 'cannot-print-this)))))) +(with-test (:name :backtrace-and-circles) + (handler-bind ((error #'continue)) + (with-output-to-string (s) + (labels ((foo (n x) + (when (plusp n) + (foo (1- n) x)) + (when (zerop n) + (sb-debug:backtrace 100 s)))) + (foo 100 (let ((list (list t))) + (nconc list list))))))) + +(with-test (:name :endianness-in-features) + (assert + (or (member :big-endian *features*) + (member :little-endian *features*)))) + +(with-test (:name :function-documentation-mismatch) + (defun test () + "X" + nil) + (setf (symbol-function 'test2) #'test) + (setf (documentation 'test 'function) "Y") + (assert (equal (documentation #'test t) + (documentation 'test 'function))) + (setf (documentation 'test2 'function) "Z") + (assert (not + (equal (documentation 'test 'function) + (documentation 'test2 'function))))) + +(with-test (:name :setf-documentation-on-nil) + (assert + (handler-case + (assert (equal (setf (documentation nil 'function) "foo") "foo")) + (style-warning () t) + (:no-error (x) + (declare (ignore x)) + nil)))) + ;;;; success