(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))
(is (eql 1 (length conflict-sets)))
(is (eql 3 (length (first conflict-sets)))))))
+;;; 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)
+ (with-packages (("FOO" (:export "NIL"))
+ ("BAR" (:use)))
+ (with-name-conflict-resolution ((sym "FOO" "NIL"))
+ (import (list 'CL:NIL (sym "FOO" "NIL")) "BAR"))
+ (do-symbols (sym "BAR")
+ (assert (eq sym (sym "FOO" "NIL"))))))
+
;;; UNINTERN
(with-test (:name unintern.1)
(with-packages (("FOO" (:export "SYM"))
(is restartedp)
(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
+ (handler-case
+ (progn
+ (eval '(with-package-iterator (sym :cl-user :foo)
+ (sym)))
+ :bad)
+ ((and simple-condition program-error) (c)
+ (assert (equal (list :foo) (simple-condition-format-arguments c)))
+ :good)))))
+
+;;; MAKE-PACKAGE error in another thread blocking FIND-PACKAGE & FIND-SYMBOL
+(with-test (:name :bug-511072 :skipped-on '(not :sb-thread))
+ (let* ((p (make-package :bug-511072))
+ (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)))