diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 5118f25f468..70e88d081fa 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -2280,15 +2280,15 @@ had been enabled." nil t)) nil))) (cl-check-type pkg (or symbol package-desc)) - (when (or (and package-install-upgrade-built-in - (package--active-built-in-p pkg)) - (package-installed-p pkg)) - (user-error "Package is already installed")) (package--archives-initialize) (add-hook 'post-command-hook #'package-menu--post-refresh) (let ((name (if (package-desc-p pkg) (package-desc-name pkg) pkg))) + (when (or (and package-install-upgrade-built-in + (package--active-built-in-p pkg)) + (package-installed-p pkg)) + (user-error "`%s' is already installed" name)) (unless (or dont-select (package--user-selected-p name)) (package--save-selected-packages (cons name package-selected-packages))) @@ -2304,8 +2304,8 @@ had been enabled." (progn (package-download-transaction transaction) (package--quickstart-maybe-refresh) - (message "Package `%s' installed." name)) - (message "`%s' is already installed" name)))) + (message "Package `%s' installed." name))))) + (declare-function package-vc-upgrade "package-vc" (pkg)) diff --git a/test/lisp/emacs-lisp/package-tests.el b/test/lisp/emacs-lisp/package-tests.el index 55f69d888b8..1f0a8f73a5c 100644 --- a/test/lisp/emacs-lisp/package-tests.el +++ b/test/lisp/emacs-lisp/package-tests.el @@ -241,7 +241,9 @@ Must called from within a `tar-mode' buffer." (package-initialize) (should (package-installed-p 'simple-single)) ;; Check if we properly report an "already installed". - (should-error (package-install 'simple-single) :type 'user-error) + (should (condition-case nil + (progn (package-install 'simple-single) nil) + (user-error t))) (should (package-installed-p 'simple-single)) (let* ((simple-pkg-dir (file-name-as-directory (expand-file-name