X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Falien.impure.lisp;h=b490961056936862a5161c2db63bd85058d35e8e;hb=171fde84561e232b8af8c05b82dfe8a8f9e08340;hp=e68737c70df4e0a27559a0bd2cc489af17c20a29;hpb=8f51ee96ea809abd464552f4322a3bba7766ad8e;p=sbcl.git diff --git a/tests/alien.impure.lisp b/tests/alien.impure.lisp index e68737c..b490961 100644 --- a/tests/alien.impure.lisp +++ b/tests/alien.impure.lisp @@ -264,8 +264,7 @@ ((foo (unsigned 32))) foo) -#+(or x86-64 x86) -(with-test (:name bug-316325) +(with-test (:name bug-316325 :skipped-on '(not (or :x86-64 :x86))) ;; This test works by defining a callback function that provides an ;; identity transform over a full-width machine word, then calling ;; it as if it returned a narrower type and checking to see if any @@ -307,4 +306,29 @@ (compiler-note (n) (error n)))) +(with-test (:name :bug-721087) + (assert (typep nil '(alien c-string))) + (assert (not (typep nil '(alien (c-string :not-null t))))) + (assert (eq :ok + (handler-case + (posix-getenv nil) + (type-error (e) + (when (and (null (type-error-datum e)) + (equal (type-error-expected-type e) + '(alien (c-string :not-null t)))) + :ok)))))) + +(with-test (:name :make-alien-string) + (let ((alien (sb-alien::make-alien-string "This comes from lisp!"))) + (gc :full t) + (assert (equal "This comes from lisp!" (cast alien c-string))) + (free-alien alien))) + +(with-test (:name :malloc-failure) + (assert (eq :enomem + (handler-case + (sb-alien:make-alien char (1- array-total-size-limit)) + (storage-condition () + :enomem))))) + ;;; success