Kill leftover threads after each test
[sbcl.git] / tests / packages.impure.lisp
index 7e912ad..0e78218 100644 (file)
 (assert (eq *foo* (find-package "")))
 (assert (delete-package ""))
 
+(make-package "BAR")
+(defvar *baz* (rename-package "BAR" "BAZ"))
+(assert (eq *baz* (find-package "BAZ")))
+(assert (delete-package *baz*))
+
 (handler-case
     (export :foo)
   (package-error (c) (princ c))
@@ -248,7 +253,7 @@ if a restart was invoked."
 ;;; Make sure that resolving a name-conflict in IMPORT doesn't leave
 ;;; multiple symbols of the same name in the package (this particular
 ;;; scenario found in 1.0.38.9, but clearly a longstanding issue).
-(with-test (:name import-conflict-resolution :fails-on :sbcl)
+(with-test (:name import-conflict-resolution)
   (with-packages (("FOO" (:export "NIL"))
                   ("BAR" (:use)))
     (with-name-conflict-resolution ((sym "FOO" "NIL"))
@@ -267,6 +272,11 @@ if a restart was invoked."
       (is (eq (sym "FOO" "SYM")
               (sym "BAZ" "SYM"))))))
 
+(with-test (:name unintern.2)
+  (with-packages (("FOO" (:intern "SYM")))
+    (unintern :sym "FOO")
+    (assert (find-symbol "SYM" "FOO"))))
+
 ;;; WITH-PACKAGE-ITERATOR error signalling had problems
 (with-test (:name with-package-itarator.error)
   (assert (eq :good
@@ -280,14 +290,17 @@ if a restart was invoked."
                   :good)))))
 
 ;;; MAKE-PACKAGE error in another thread blocking FIND-PACKAGE & FIND-SYMBOL
-#+sb-thread
-(with-test (:name :bug-511072)
+(with-test (:name :bug-511072 :skipped-on '(not :sb-thread))
   (let* ((p (make-package :bug-511072))
-         (sem (sb-thread:make-semaphore))
-         (t2 (sb-thread:make-thread (lambda ()
-                                      (handler-bind ((error (lambda (c)
-                                                              (sb-thread:signal-semaphore sem)
-                                                              (signal c))))
-                                        (make-package :bug-511072))))))
-    (sb-thread:wait-on-semaphore sem)
-    (assert (eq 'cons (read-from-string "CL:CONS")))))
+         (sem1 (sb-thread:make-semaphore))
+         (sem2 (sb-thread:make-semaphore))
+         (t2 (make-join-thread (lambda ()
+                                 (handler-bind ((error (lambda (c)
+                                                         (sb-thread:signal-semaphore sem1)
+                                                         (sb-thread:wait-on-semaphore sem2)
+                                                         (abort c))))
+                                   (make-package :bug-511072))))))
+    (sb-thread:wait-on-semaphore sem1)
+    (with-timeout 10
+      (assert (eq 'cons (read-from-string "CL:CONS"))))
+    (sb-thread:signal-semaphore sem2)))