summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Kangas <stefankangas@gmail.com>2019-10-20 23:49:18 +0200
committerStefan Kangas <stefankangas@gmail.com>2019-10-21 00:00:36 +0200
commit0e6f4628d8fff53505e4399e71da9f531a64fff7 (patch)
tree22b587b6b12cba555590d22f586b94d5eccd30c1
parent78cb3791fa11c95756ee3917c63cfea774f128a2 (diff)
downloademacs-0e6f4628d8fff53505e4399e71da9f531a64fff7.tar.gz
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.
-rw-r--r--lisp/emacs-lisp/package.el5
-rw-r--r--test/lisp/emacs-lisp/package-resources/with-nil-entry/archive-contents8
-rw-r--r--test/lisp/emacs-lisp/package-tests.el10
3 files changed, 22 insertions, 1 deletions
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."