From 0e6f4628d8fff53505e4399e71da9f531a64fff7 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Sun, 20 Oct 2019 23:49:18 +0200 Subject: [PATCH] Don't try to add nil packages on refresh * lisp/emacs-lisp/package.el (package-read-archive-contents): Don't try to add nil entries. Warn instead. (Bug#28502) * test/lisp/emacs-lisp/package-tests.el (package-test-update-archives/ignore-nil-entry): New test. * test/lisp/emacs-lisp/package-resources/with-nil-entry/archive-contents: New file. --- lisp/emacs-lisp/package.el | 5 ++++- .../package-resources/with-nil-entry/archive-contents | 8 ++++++++ test/lisp/emacs-lisp/package-tests.el | 10 ++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 test/lisp/emacs-lisp/package-resources/with-nil-entry/archive-contents diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 20462064afd..645e831bcc9 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -1520,7 +1520,10 @@ If the archive version is too new, signal an error." (contents (package--read-archive-file contents-file))) (when contents (dolist (package contents) - (package--add-to-archive-contents package archive))))) + (if package + (package--add-to-archive-contents package archive) + (lwarn '(package refresh) :warning + "Ignoring `nil' package on `%s' package archive" archive)))))) (defvar package--old-archive-priorities nil "Store currently used `package-archive-priorities'. diff --git a/test/lisp/emacs-lisp/package-resources/with-nil-entry/archive-contents b/test/lisp/emacs-lisp/package-resources/with-nil-entry/archive-contents new file mode 100644 index 00000000000..03e6aa7f7c6 --- /dev/null +++ b/test/lisp/emacs-lisp/package-resources/with-nil-entry/archive-contents @@ -0,0 +1,8 @@ +(1 + (foo . + [(1 0) + nil "foo package" single]) + nil + (bar . + [(1 0) + nil "bar package" single])) diff --git a/test/lisp/emacs-lisp/package-tests.el b/test/lisp/emacs-lisp/package-tests.el index 8670e6f3fac..828c456842a 100644 --- a/test/lisp/emacs-lisp/package-tests.el +++ b/test/lisp/emacs-lisp/package-tests.el @@ -452,6 +452,16 @@ Must called from within a `tar-mode' buffer." (search-forward-regexp "^ +simple-single" nil t)))) (if (process-live-p process) (kill-process process))))) +(ert-deftest package-test-update-archives/ignore-nil-entry () + "Ignore any packages that are nil. Test for Bug#28502." + (with-package-test () + (let* ((with-nil-entry (expand-file-name "package-resources/with-nil-entry" + package-test-file-dir)) + (package-archives `(("with-nil-entry" . ,with-nil-entry)))) + (package-initialize) + (package-refresh-contents) + (should (equal (length package-archive-contents) 2))))) + (ert-deftest package-test-describe-package () "Test displaying help for a package." -- 2.39.2