1.0.22.7: Update to ASDF 1.130
[sbcl.git] / tests / foreign.test.sh
index 6e76133..01fdc85 100644 (file)
@@ -36,6 +36,9 @@ build_so() (
   esac
   if [ "`uname`" = Darwin ]; then
     SO_FLAGS="-bundle"
+    if run_sbcl --eval '(sb-ext:quit :unix-status #+x86-64 0 #-x86-64 1)'; then
+       CFLAGS="$CFLAGS -arch x86_64"
+    fi
   else
     SO_FLAGS="-shared"
   fi
@@ -124,8 +127,8 @@ cat > $TEST_FILESTEM.base.lisp <<EOF
   (eval-when (:compile-toplevel :load-toplevel :execute)
     (handler-case
         (progn
-          (load-shared-object "$TEST_FILESTEM.so")
-          (load-shared-object "$TEST_FILESTEM-b.so"))
+          (load-shared-object (truename "$TEST_FILESTEM.so"))
+          (load-shared-object (truename "$TEST_FILESTEM-b.so")))
       (sb-int:unsupported-operator ()
         ;; At least as of sbcl-0.7.0.5, LOAD-SHARED-OBJECT isn't
         ;; supported on every OS. In that case, there's nothing to test,
@@ -221,7 +224,7 @@ cat > $TEST_FILESTEM.test.lisp <<EOF
   (note "/original definitions ok")
   (rename-file "$TEST_FILESTEM-b.so" "$TEST_FILESTEM-b.bak")
   (rename-file "$TEST_FILESTEM-b2.so" "$TEST_FILESTEM-b.so")
-  (load-shared-object "$TEST_FILESTEM-b.so")
+  (load-shared-object (truename "$TEST_FILESTEM-b.so"))
   (note "/reloading ok")
   (assert (= 42 foo))
   (assert (= 13 (bar)))
@@ -242,9 +245,16 @@ cat > $TEST_FILESTEM.test.lisp <<EOF
     (multiple-value-bind (val err) (ignore-errors (late-bar))
       (assert (not val))
       (assert (typep err 'undefined-alien-error)))
-    (load-shared-object "$TEST_FILESTEM-c.so")
+    (load-shared-object (truename "$TEST_FILESTEM-c.so"))
     (assert (= 43 late-foo))
     (assert (= 14 (late-bar)))
+    (unload-shared-object (truename "$TEST_FILESTEM-c.so"))
+    (multiple-value-bind (val err) (ignore-errors late-foo)
+      (assert (not val))
+      (assert (typep err 'undefined-alien-error)))
+    (multiple-value-bind (val err) (ignore-errors (late-bar))
+      (assert (not val))
+      (assert (typep err 'undefined-alien-error)))
     (note "/linkage table ok"))
 
   (sb-ext:quit :unix-status $EXIT_LISP_WIN) ; success convention for Lisp program
@@ -322,7 +332,7 @@ EOF
 build_so $TEST_FILESTEM.addr.heap
 
 run_sbcl <<EOF
-  (load-shared-object "$TEST_FILESTEM.addr.heap.so")
+  (load-shared-object (truename "$TEST_FILESTEM.addr.heap.so"))
   (define-alien-type foo (struct foo (x int) (y int)))
 
   (define-alien-variable a foo)