X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Falien.impure.lisp;h=c235b630206b47f00402c6681ffe27fba8eea2db;hb=219cc40793f9c82fb943b29a1846f898f4f9de1e;hp=e68737c70df4e0a27559a0bd2cc489af17c20a29;hpb=8f51ee96ea809abd464552f4322a3bba7766ad8e;p=sbcl.git diff --git a/tests/alien.impure.lisp b/tests/alien.impure.lisp index e68737c..c235b63 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,22 @@ (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))) + ;;; success