diff options
| author | Dmitry Gutov | 2013-09-29 22:41:00 +0300 |
|---|---|---|
| committer | Dmitry Gutov | 2013-09-29 22:41:00 +0300 |
| commit | 056453c62ebfdcea2764fdaba09a89d0e533ec1d (patch) | |
| tree | e17e4104053c09fada02b1a236f7938f51812bfa | |
| parent | 832966e57f6290e09bb5b477f4d947df53c230d0 (diff) | |
| download | emacs-056453c62ebfdcea2764fdaba09a89d0e533ec1d.tar.gz emacs-056453c62ebfdcea2764fdaba09a89d0e533ec1d.zip | |
* lisp/emacs-lisp/package-x.el (package-upload-buffer-internal): Pass
`extras' slot from `package-desc' to `package-make-ac-desc'.
* lisp/emacs-lisp/package.el (package-desc-from-define): Accept
additional arguments as plist, convert it to an alist and store it
in the `extras' slot.
(package-generate-description-file): Convert extras alist back to
plist and append to the `define-package' form arguments.
(package--alist-to-plist): New function.
(package--ac-desc): Add `extras' slot.
(package--add-to-archive-contents): Check if the archive-contents
vector is long enough, and if it is, pass its `extras' slot value
to `package-desc-create'.
(package-buffer-info): Call `lm-homepage', pass the returned value
to `package-desc-from-define'.
(describe-package-1): Render the homepage button.
* test/automated/package-test.el (simple-single-desc-1-4): Remove, it
was unused.
(simple-single-desc): Expect :homepage property.
(multi-file-desc): Same.
(with-package-test): Do not save previous `default-directory'
value, let-bind the var instead.
(package-test-install-single): Expect :homepage property in the
generated pkg file.
(package-test-describe-package): Expect Homepage button.
(package-test-describe-non-installed-package)
(package-test-describe-non-installed-multi-file-package): Same.
(package-test-describe-not-installed-package): Remove, it was a
duplicate.
* test/automated/package-x-test.el
(package-x-test--single-archive-entry-1-3): Expect :homepage
property.
(package-x-test--single-archive-entry-1-4): Expect nil extras slot.
* test/automated/data/package/archive-contents: Add :homepage
properties to `simple-single' and `multi-file'.
* test/automated/data/package/simple-single-1.3.el: Add URL header.
Fixes: debbugs:13291
| -rw-r--r-- | lisp/ChangeLog | 19 | ||||
| -rw-r--r-- | lisp/emacs-lisp/package-x.el | 3 | ||||
| -rw-r--r-- | lisp/emacs-lisp/package.el | 76 | ||||
| -rw-r--r-- | test/ChangeLog | 26 | ||||
| -rw-r--r-- | test/automated/data/package/archive-contents | 6 | ||||
| -rw-r--r-- | test/automated/data/package/multi-file-0.2.3.tar | bin | 20480 -> 20480 bytes | |||
| -rw-r--r-- | test/automated/data/package/simple-single-1.3.el | 1 | ||||
| -rw-r--r-- | test/automated/package-test.el | 37 | ||||
| -rw-r--r-- | test/automated/package-x-test.el | 6 |
9 files changed, 122 insertions, 52 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3da4cef6952..3e689f443ce 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,22 @@ | |||
| 1 | 2013-09-29 Dmitry Gutov <dgutov@yandex.ru> | ||
| 2 | |||
| 3 | * emacs-lisp/package.el (package-desc-from-define): Accept | ||
| 4 | additional arguments as plist, convert it to an alist and store it | ||
| 5 | in the `extras' slot. | ||
| 6 | (package-generate-description-file): Convert extras alist back to | ||
| 7 | plist and append to the `define-package' form arguments. | ||
| 8 | (package--alist-to-plist): New function. | ||
| 9 | (package--ac-desc): Add `extras' slot. | ||
| 10 | (package--add-to-archive-contents): Check if the archive-contents | ||
| 11 | vector is long enough, and if it is, pass its `extras' slot value | ||
| 12 | to `package-desc-create'. | ||
| 13 | (package-buffer-info): Call `lm-homepage', pass the returned value | ||
| 14 | to `package-desc-from-define'. | ||
| 15 | (describe-package-1): Render the homepage button (Bug#13291). | ||
| 16 | |||
| 17 | * emacs-lisp/package-x.el (package-upload-buffer-internal): Pass | ||
| 18 | `extras' slot from `package-desc' to `package-make-ac-desc'. | ||
| 19 | |||
| 1 | 2013-09-29 Jan Djärv <jan.h.d@swipnet.se> | 20 | 2013-09-29 Jan Djärv <jan.h.d@swipnet.se> |
| 2 | 21 | ||
| 3 | * term/ns-win.el (ns-initialize-window-system): Set locale-coding-system | 22 | * term/ns-win.el (ns-initialize-window-system): Set locale-coding-system |
diff --git a/lisp/emacs-lisp/package-x.el b/lisp/emacs-lisp/package-x.el index 76d7565d64b..11053158d3e 100644 --- a/lisp/emacs-lisp/package-x.el +++ b/lisp/emacs-lisp/package-x.el | |||
| @@ -209,6 +209,7 @@ if it exists." | |||
| 209 | (pcase file-type | 209 | (pcase file-type |
| 210 | (`single (lm-commentary)) | 210 | (`single (lm-commentary)) |
| 211 | (`tar nil))) ;; FIXME: Get it from the README file. | 211 | (`tar nil))) ;; FIXME: Get it from the README file. |
| 212 | (extras (package-desc-extras pkg-desc)) | ||
| 212 | (pkg-version (package-version-join split-version)) | 213 | (pkg-version (package-version-join split-version)) |
| 213 | (pkg-buffer (current-buffer))) | 214 | (pkg-buffer (current-buffer))) |
| 214 | 215 | ||
| @@ -217,7 +218,7 @@ if it exists." | |||
| 217 | (let ((contents (or (package--archive-contents-from-url archive-url) | 218 | (let ((contents (or (package--archive-contents-from-url archive-url) |
| 218 | (package--archive-contents-from-file))) | 219 | (package--archive-contents-from-file))) |
| 219 | (new-desc (package-make-ac-desc | 220 | (new-desc (package-make-ac-desc |
| 220 | split-version requires desc file-type))) | 221 | split-version requires desc file-type extras))) |
| 221 | (if (> (car contents) package-archive-version) | 222 | (if (> (car contents) package-archive-version) |
| 222 | (error "Unrecognized archive version %d" (car contents))) | 223 | (error "Unrecognized archive version %d" (car contents))) |
| 223 | (let ((elt (assq pkg-name (cdr contents)))) | 224 | (let ((elt (assq pkg-name (cdr contents)))) |
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 77496bad441..785263789b0 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el | |||
| @@ -296,7 +296,7 @@ contrast, `package-user-dir' contains packages for personal use." | |||
| 296 | (:constructor | 296 | (:constructor |
| 297 | package-desc-from-define | 297 | package-desc-from-define |
| 298 | (name-string version-string &optional summary requirements | 298 | (name-string version-string &optional summary requirements |
| 299 | &key kind archive &allow-other-keys | 299 | &rest rest-plist |
| 300 | &aux | 300 | &aux |
| 301 | (name (intern name-string)) | 301 | (name (intern name-string)) |
| 302 | (version (version-to-list version-string)) | 302 | (version (version-to-list version-string)) |
| @@ -305,7 +305,19 @@ contrast, `package-user-dir' contains packages for personal use." | |||
| 305 | (version-to-list (cadr elt)))) | 305 | (version-to-list (cadr elt)))) |
| 306 | (if (eq 'quote (car requirements)) | 306 | (if (eq 'quote (car requirements)) |
| 307 | (nth 1 requirements) | 307 | (nth 1 requirements) |
| 308 | requirements)))))) | 308 | requirements))) |
| 309 | (kind (plist-get rest-plist :kind)) | ||
| 310 | (archive (plist-get rest-plist :archive)) | ||
| 311 | (extras (let (alist) | ||
| 312 | (cl-remf rest-plist :kind) | ||
| 313 | (cl-remf rest-plist :archive) | ||
| 314 | (while rest-plist | ||
| 315 | (let ((value (cadr rest-plist))) | ||
| 316 | (when value | ||
| 317 | (push (cons (car rest-plist) value) | ||
| 318 | alist))) | ||
| 319 | (setq rest-plist (cddr rest-plist))) | ||
| 320 | alist))))) | ||
| 309 | "Structure containing information about an individual package. | 321 | "Structure containing information about an individual package. |
| 310 | Slots: | 322 | Slots: |
| 311 | 323 | ||
| @@ -327,14 +339,17 @@ Slots: | |||
| 327 | package came. | 339 | package came. |
| 328 | 340 | ||
| 329 | `dir' The directory where the package is installed (if installed), | 341 | `dir' The directory where the package is installed (if installed), |
| 330 | `builtin' if it is built-in, or nil otherwise." | 342 | `builtin' if it is built-in, or nil otherwise. |
| 343 | |||
| 344 | `extras' Optional alist of additional keyword-value pairs." | ||
| 331 | name | 345 | name |
| 332 | version | 346 | version |
| 333 | (summary package--default-summary) | 347 | (summary package--default-summary) |
| 334 | reqs | 348 | reqs |
| 335 | kind | 349 | kind |
| 336 | archive | 350 | archive |
| 337 | dir) | 351 | dir |
| 352 | extras) | ||
| 338 | 353 | ||
| 339 | ;; Pseudo fields. | 354 | ;; Pseudo fields. |
| 340 | (defun package-desc-full-name (pkg-desc) | 355 | (defun package-desc-full-name (pkg-desc) |
| @@ -642,22 +657,28 @@ untar into a directory named DIR; otherwise, signal an error." | |||
| 642 | (write-region | 657 | (write-region |
| 643 | (concat | 658 | (concat |
| 644 | (prin1-to-string | 659 | (prin1-to-string |
| 645 | (list 'define-package | 660 | (nconc |
| 646 | (symbol-name name) | 661 | (list 'define-package |
| 647 | (package-version-join (package-desc-version pkg-desc)) | 662 | (symbol-name name) |
| 648 | (package-desc-summary pkg-desc) | 663 | (package-version-join (package-desc-version pkg-desc)) |
| 649 | (let ((requires (package-desc-reqs pkg-desc))) | 664 | (package-desc-summary pkg-desc) |
| 650 | (list 'quote | 665 | (let ((requires (package-desc-reqs pkg-desc))) |
| 651 | ;; Turn version lists into string form. | 666 | (list 'quote |
| 652 | (mapcar | 667 | ;; Turn version lists into string form. |
| 653 | (lambda (elt) | 668 | (mapcar |
| 654 | (list (car elt) | 669 | (lambda (elt) |
| 655 | (package-version-join (cadr elt)))) | 670 | (list (car elt) |
| 656 | requires))))) | 671 | (package-version-join (cadr elt)))) |
| 672 | requires)))) | ||
| 673 | (package--alist-to-plist | ||
| 674 | (package-desc-extras pkg-desc)))) | ||
| 657 | "\n") | 675 | "\n") |
| 658 | nil | 676 | nil |
| 659 | pkg-file)))) | 677 | pkg-file)))) |
| 660 | 678 | ||
| 679 | (defun package--alist-to-plist (alist) | ||
| 680 | (apply #'nconc (mapcar (lambda (pair) (list (car pair) (cdr pair))) alist))) | ||
| 681 | |||
| 661 | (defun package-unpack (pkg-desc) | 682 | (defun package-unpack (pkg-desc) |
| 662 | "Install the contents of the current buffer as a package." | 683 | "Install the contents of the current buffer as a package." |
| 663 | (let* ((name (package-desc-name pkg-desc)) | 684 | (let* ((name (package-desc-name pkg-desc)) |
| @@ -893,10 +914,10 @@ If the archive version is too new, signal an error." | |||
| 893 | ;; Changing this defstruct implies changing the format of the | 914 | ;; Changing this defstruct implies changing the format of the |
| 894 | ;; "archive-contents" files. | 915 | ;; "archive-contents" files. |
| 895 | (cl-defstruct (package--ac-desc | 916 | (cl-defstruct (package--ac-desc |
| 896 | (:constructor package-make-ac-desc (version reqs summary kind)) | 917 | (:constructor package-make-ac-desc (version reqs summary kind extras)) |
| 897 | (:copier nil) | 918 | (:copier nil) |
| 898 | (:type vector)) | 919 | (:type vector)) |
| 899 | version reqs summary kind) | 920 | version reqs summary kind extras) |
| 900 | 921 | ||
| 901 | (defun package--add-to-archive-contents (package archive) | 922 | (defun package--add-to-archive-contents (package archive) |
| 902 | "Add the PACKAGE from the given ARCHIVE if necessary. | 923 | "Add the PACKAGE from the given ARCHIVE if necessary. |
| @@ -911,7 +932,11 @@ Also, add the originating archive to the `package-desc' structure." | |||
| 911 | :reqs (package--ac-desc-reqs (cdr package)) | 932 | :reqs (package--ac-desc-reqs (cdr package)) |
| 912 | :summary (package--ac-desc-summary (cdr package)) | 933 | :summary (package--ac-desc-summary (cdr package)) |
| 913 | :kind (package--ac-desc-kind (cdr package)) | 934 | :kind (package--ac-desc-kind (cdr package)) |
| 914 | :archive archive)) | 935 | :archive archive |
| 936 | :extras (and (> (length (cdr package)) 4) | ||
| 937 | ;; Older archive-contents files have only 4 | ||
| 938 | ;; elements here. | ||
| 939 | (package--ac-desc-extras (cdr package))))) | ||
| 915 | (existing-packages (assq name package-archive-contents)) | 940 | (existing-packages (assq name package-archive-contents)) |
| 916 | (pinned-to-archive (assoc name package-pinned-packages))) | 941 | (pinned-to-archive (assoc name package-pinned-packages))) |
| 917 | (cond | 942 | (cond |
| @@ -1004,14 +1029,16 @@ boundaries." | |||
| 1004 | ;; probably wants us to use it. Otherwise try Version. | 1029 | ;; probably wants us to use it. Otherwise try Version. |
| 1005 | (pkg-version | 1030 | (pkg-version |
| 1006 | (or (package-strip-rcs-id (lm-header "package-version")) | 1031 | (or (package-strip-rcs-id (lm-header "package-version")) |
| 1007 | (package-strip-rcs-id (lm-header "version"))))) | 1032 | (package-strip-rcs-id (lm-header "version")))) |
| 1033 | (homepage (lm-homepage))) | ||
| 1008 | (unless pkg-version | 1034 | (unless pkg-version |
| 1009 | (error | 1035 | (error |
| 1010 | "Package lacks a \"Version\" or \"Package-Version\" header")) | 1036 | "Package lacks a \"Version\" or \"Package-Version\" header")) |
| 1011 | (package-desc-from-define | 1037 | (package-desc-from-define |
| 1012 | file-name pkg-version desc | 1038 | file-name pkg-version desc |
| 1013 | (if requires-str (package-read-from-string requires-str)) | 1039 | (if requires-str (package-read-from-string requires-str)) |
| 1014 | :kind 'single)))) | 1040 | :kind 'single |
| 1041 | :homepage homepage)))) | ||
| 1015 | 1042 | ||
| 1016 | (declare-function tar-get-file-descriptor "tar-mode" (file)) | 1043 | (declare-function tar-get-file-descriptor "tar-mode" (file)) |
| 1017 | (declare-function tar--extract "tar-mode" (descriptor)) | 1044 | (declare-function tar--extract "tar-mode" (descriptor)) |
| @@ -1180,6 +1207,8 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages." | |||
| 1180 | (reqs (if desc (package-desc-reqs desc))) | 1207 | (reqs (if desc (package-desc-reqs desc))) |
| 1181 | (version (if desc (package-desc-version desc))) | 1208 | (version (if desc (package-desc-version desc))) |
| 1182 | (archive (if desc (package-desc-archive desc))) | 1209 | (archive (if desc (package-desc-archive desc))) |
| 1210 | (homepage (if desc (cdr (assoc :homepage | ||
| 1211 | (package-desc-extras desc))))) | ||
| 1183 | (built-in (eq pkg-dir 'builtin)) | 1212 | (built-in (eq pkg-dir 'builtin)) |
| 1184 | (installable (and archive (not built-in))) | 1213 | (installable (and archive (not built-in))) |
| 1185 | (status (if desc (package-desc-status desc) "orphan"))) | 1214 | (status (if desc (package-desc-status desc) "orphan"))) |
| @@ -1248,7 +1277,10 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages." | |||
| 1248 | (insert "\n"))) | 1277 | (insert "\n"))) |
| 1249 | (insert " " (propertize "Summary" 'font-lock-face 'bold) | 1278 | (insert " " (propertize "Summary" 'font-lock-face 'bold) |
| 1250 | ": " (if desc (package-desc-summary desc)) "\n") | 1279 | ": " (if desc (package-desc-summary desc)) "\n") |
| 1251 | 1280 | (when homepage | |
| 1281 | (insert " " (propertize "Homepage" 'font-lock-face 'bold) ": ") | ||
| 1282 | (help-insert-xref-button homepage 'help-url homepage) | ||
| 1283 | (insert "\n")) | ||
| 1252 | (let* ((all-pkgs (append (cdr (assq name package-alist)) | 1284 | (let* ((all-pkgs (append (cdr (assq name package-alist)) |
| 1253 | (cdr (assq name package-archive-contents)) | 1285 | (cdr (assq name package-archive-contents)) |
| 1254 | (let ((bi (assq name package--builtins))) | 1286 | (let ((bi (assq name package--builtins))) |
diff --git a/test/ChangeLog b/test/ChangeLog index c8785ab4fec..3f115d9e4e8 100644 --- a/test/ChangeLog +++ b/test/ChangeLog | |||
| @@ -1,3 +1,29 @@ | |||
| 1 | 2013-09-29 Dmitry Gutov <dgutov@yandex.ru> | ||
| 2 | |||
| 3 | * automated/package-test.el (simple-single-desc-1-4): Remove, it | ||
| 4 | was unused. | ||
| 5 | (simple-single-desc): Expect :homepage property. | ||
| 6 | (multi-file-desc): Same. | ||
| 7 | (with-package-test): Do not save previous `default-directory' | ||
| 8 | value, let-bind the var instead. | ||
| 9 | (package-test-install-single): Expect :homepage property in the | ||
| 10 | generated pkg file. | ||
| 11 | (package-test-describe-package): Expect Homepage button. | ||
| 12 | (package-test-describe-non-installed-package) | ||
| 13 | (package-test-describe-non-installed-multi-file-package): Same. | ||
| 14 | (package-test-describe-not-installed-package): Remove, it was a | ||
| 15 | duplicate. | ||
| 16 | |||
| 17 | * automated/package-x-test.el | ||
| 18 | (package-x-test--single-archive-entry-1-3): Expect :homepage | ||
| 19 | property. | ||
| 20 | (package-x-test--single-archive-entry-1-4): Expect nil extras slot. | ||
| 21 | |||
| 22 | * automated/data/package/simple-single-1.3.el: Add URL header. | ||
| 23 | |||
| 24 | * automated/data/package/archive-contents: Add :homepage | ||
| 25 | properties to `simple-single' and `multi-file'. | ||
| 26 | |||
| 1 | 2013-09-22 Daniel Colascione <dancol@dancol.org> | 27 | 2013-09-22 Daniel Colascione <dancol@dancol.org> |
| 2 | 28 | ||
| 3 | * automated/data-test.el: | 29 | * automated/data-test.el: |
diff --git a/test/automated/data/package/archive-contents b/test/automated/data/package/archive-contents index 7e4a410030f..b26179c0c3b 100644 --- a/test/automated/data/package/archive-contents +++ b/test/automated/data/package/archive-contents | |||
| @@ -1,10 +1,12 @@ | |||
| 1 | (1 | 1 | (1 |
| 2 | (simple-single . | 2 | (simple-single . |
| 3 | [(1 3) | 3 | [(1 3) |
| 4 | nil "A single-file package with no dependencies" single]) | 4 | nil "A single-file package with no dependencies" single |
| 5 | ((:homepage . "http://doodles.au"))]) | ||
| 5 | (simple-depend . | 6 | (simple-depend . |
| 6 | [(1 0) | 7 | [(1 0) |
| 7 | ((simple-single (1 3))) "A single-file package with a dependency." single]) | 8 | ((simple-single (1 3))) "A single-file package with a dependency." single]) |
| 8 | (multi-file . | 9 | (multi-file . |
| 9 | [(0 2 3) | 10 | [(0 2 3) |
| 10 | nil "Example of a multi-file tar package" tar])) | 11 | nil "Example of a multi-file tar package" tar |
| 12 | ((:homepage . "http://puddles.li"))])) | ||
diff --git a/test/automated/data/package/multi-file-0.2.3.tar b/test/automated/data/package/multi-file-0.2.3.tar index bdbbab0e6f4..dde331d0e01 100644 --- a/test/automated/data/package/multi-file-0.2.3.tar +++ b/test/automated/data/package/multi-file-0.2.3.tar | |||
| Binary files differ | |||
diff --git a/test/automated/data/package/simple-single-1.3.el b/test/automated/data/package/simple-single-1.3.el index a61784164f8..6756a28080b 100644 --- a/test/automated/data/package/simple-single-1.3.el +++ b/test/automated/data/package/simple-single-1.3.el | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | ;; Author: J. R. Hacker <jrh@example.com> | 3 | ;; Author: J. R. Hacker <jrh@example.com> |
| 4 | ;; Version: 1.3 | 4 | ;; Version: 1.3 |
| 5 | ;; Keywords: frobnicate | 5 | ;; Keywords: frobnicate |
| 6 | ;; URL: http://doodles.au | ||
| 6 | 7 | ||
| 7 | ;;; Commentary: | 8 | ;;; Commentary: |
| 8 | 9 | ||
diff --git a/test/automated/package-test.el b/test/automated/package-test.el index 799009063e1..b5235ee99a9 100644 --- a/test/automated/package-test.el +++ b/test/automated/package-test.el | |||
| @@ -47,16 +47,10 @@ | |||
| 47 | (package-desc-create :name 'simple-single | 47 | (package-desc-create :name 'simple-single |
| 48 | :version '(1 3) | 48 | :version '(1 3) |
| 49 | :summary "A single-file package with no dependencies" | 49 | :summary "A single-file package with no dependencies" |
| 50 | :kind 'single) | 50 | :kind 'single |
| 51 | :extras '((:homepage . "http://doodles.au"))) | ||
| 51 | "Expected `package-desc' parsed from simple-single-1.3.el.") | 52 | "Expected `package-desc' parsed from simple-single-1.3.el.") |
| 52 | 53 | ||
| 53 | (defvar simple-single-desc-1-4 | ||
| 54 | (package-desc-create :name 'simple-single | ||
| 55 | :version '(1 4) | ||
| 56 | :summary "A single-file package with no dependencies" | ||
| 57 | :kind 'single) | ||
| 58 | "Expected `package-desc' parsed from simple-single-1.4.el.") | ||
| 59 | |||
| 60 | (defvar simple-depend-desc | 54 | (defvar simple-depend-desc |
| 61 | (package-desc-create :name 'simple-depend | 55 | (package-desc-create :name 'simple-depend |
| 62 | :version '(1 0) | 56 | :version '(1 0) |
| @@ -69,7 +63,8 @@ | |||
| 69 | (package-desc-create :name 'multi-file | 63 | (package-desc-create :name 'multi-file |
| 70 | :version '(0 2 3) | 64 | :version '(0 2 3) |
| 71 | :summary "Example of a multi-file tar package" | 65 | :summary "Example of a multi-file tar package" |
| 72 | :kind 'tar) | 66 | :kind 'tar |
| 67 | :extras '((:homepage . "http://puddles.li"))) | ||
| 73 | "Expected `package-desc' from \"multi-file-0.2.3.tar\".") | 68 | "Expected `package-desc' from \"multi-file-0.2.3.tar\".") |
| 74 | 69 | ||
| 75 | (defvar new-pkg-desc | 70 | (defvar new-pkg-desc |
| @@ -97,7 +92,7 @@ | |||
| 97 | (package-user-dir package-test-user-dir) | 92 | (package-user-dir package-test-user-dir) |
| 98 | (package-archives `(("gnu" . ,package-test-data-dir))) | 93 | (package-archives `(("gnu" . ,package-test-data-dir))) |
| 99 | (old-yes-no-defn (symbol-function 'yes-or-no-p)) | 94 | (old-yes-no-defn (symbol-function 'yes-or-no-p)) |
| 100 | (old-pwd default-directory) | 95 | (default-directory package-test-file-dir) |
| 101 | package--initialized | 96 | package--initialized |
| 102 | package-alist | 97 | package-alist |
| 103 | ,@(if update-news | 98 | ,@(if update-news |
| @@ -128,8 +123,7 @@ | |||
| 128 | (when (and (boundp 'package-test-archive-upload-base) | 123 | (when (and (boundp 'package-test-archive-upload-base) |
| 129 | (file-directory-p package-test-archive-upload-base)) | 124 | (file-directory-p package-test-archive-upload-base)) |
| 130 | (delete-directory package-test-archive-upload-base t)) | 125 | (delete-directory package-test-archive-upload-base t)) |
| 131 | (setf (symbol-function 'yes-or-no-p) old-yes-no-defn) | 126 | (setf (symbol-function 'yes-or-no-p) old-yes-no-defn)))) |
| 132 | (cd old-pwd)))) | ||
| 133 | 127 | ||
| 134 | (defmacro with-fake-help-buffer (&rest body) | 128 | (defmacro with-fake-help-buffer (&rest body) |
| 135 | "Execute BODY in a temp buffer which is treated as the \"*Help*\" buffer." | 129 | "Execute BODY in a temp buffer which is treated as the \"*Help*\" buffer." |
| @@ -194,7 +188,9 @@ Must called from within a `tar-mode' buffer." | |||
| 194 | (should (string= (buffer-string) | 188 | (should (string= (buffer-string) |
| 195 | (concat "(define-package \"simple-single\" \"1.3\" " | 189 | (concat "(define-package \"simple-single\" \"1.3\" " |
| 196 | "\"A single-file package " | 190 | "\"A single-file package " |
| 197 | "with no dependencies\" 'nil)\n")))) | 191 | "with no dependencies\" 'nil " |
| 192 | ":homepage \"http://doodles.au\"" | ||
| 193 | ")\n")))) | ||
| 198 | (should (file-exists-p autoloads-file)) | 194 | (should (file-exists-p autoloads-file)) |
| 199 | (should-not (get-file-buffer autoloads-file))))) | 195 | (should-not (get-file-buffer autoloads-file))))) |
| 200 | 196 | ||
| @@ -319,23 +315,12 @@ Must called from within a `tar-mode' buffer." | |||
| 319 | (should (search-forward "Version: 1.3" nil t)) | 315 | (should (search-forward "Version: 1.3" nil t)) |
| 320 | (should (search-forward "Summary: A single-file package with no dependencies" | 316 | (should (search-forward "Summary: A single-file package with no dependencies" |
| 321 | nil t)) | 317 | nil t)) |
| 318 | (should (search-forward "Homepage: http://doodles.au" nil t)) | ||
| 322 | ;; No description, though. Because at this point we don't know | 319 | ;; No description, though. Because at this point we don't know |
| 323 | ;; what archive the package originated from, and we don't have | 320 | ;; what archive the package originated from, and we don't have |
| 324 | ;; its readme file saved. | 321 | ;; its readme file saved. |
| 325 | ))) | 322 | ))) |
| 326 | 323 | ||
| 327 | (ert-deftest package-test-describe-not-installed-package () | ||
| 328 | "Test displaying of the readme for not-installed package." | ||
| 329 | |||
| 330 | (with-package-test () | ||
| 331 | (package-initialize) | ||
| 332 | (package-refresh-contents) | ||
| 333 | (with-fake-help-buffer | ||
| 334 | (describe-package 'simple-single) | ||
| 335 | (goto-char (point-min)) | ||
| 336 | (should (search-forward "This package provides a minor mode to frobnicate" | ||
| 337 | nil t))))) | ||
| 338 | |||
| 339 | (ert-deftest package-test-describe-non-installed-package () | 324 | (ert-deftest package-test-describe-non-installed-package () |
| 340 | "Test displaying of the readme for non-installed package." | 325 | "Test displaying of the readme for non-installed package." |
| 341 | 326 | ||
| @@ -345,6 +330,7 @@ Must called from within a `tar-mode' buffer." | |||
| 345 | (with-fake-help-buffer | 330 | (with-fake-help-buffer |
| 346 | (describe-package 'simple-single) | 331 | (describe-package 'simple-single) |
| 347 | (goto-char (point-min)) | 332 | (goto-char (point-min)) |
| 333 | (should (search-forward "Homepage: http://doodles.au" nil t)) | ||
| 348 | (should (search-forward "This package provides a minor mode to frobnicate" | 334 | (should (search-forward "This package provides a minor mode to frobnicate" |
| 349 | nil t))))) | 335 | nil t))))) |
| 350 | 336 | ||
| @@ -357,6 +343,7 @@ Must called from within a `tar-mode' buffer." | |||
| 357 | (with-fake-help-buffer | 343 | (with-fake-help-buffer |
| 358 | (describe-package 'multi-file) | 344 | (describe-package 'multi-file) |
| 359 | (goto-char (point-min)) | 345 | (goto-char (point-min)) |
| 346 | (should (search-forward "Homepage: http://puddles.li" nil t)) | ||
| 360 | (should (search-forward "This is a bare-bones readme file for the multi-file" | 347 | (should (search-forward "This is a bare-bones readme file for the multi-file" |
| 361 | nil t))))) | 348 | nil t))))) |
| 362 | 349 | ||
diff --git a/test/automated/package-x-test.el b/test/automated/package-x-test.el index beb18358085..c7b82360dd8 100644 --- a/test/automated/package-x-test.el +++ b/test/automated/package-x-test.el | |||
| @@ -48,14 +48,16 @@ | |||
| 48 | (cons 'simple-single | 48 | (cons 'simple-single |
| 49 | (package-make-ac-desc '(1 3) nil | 49 | (package-make-ac-desc '(1 3) nil |
| 50 | "A single-file package with no dependencies" | 50 | "A single-file package with no dependencies" |
| 51 | 'single)) | 51 | 'single |
| 52 | '((:homepage . "http://doodles.au")))) | ||
| 52 | "Expected contents of the archive entry from the \"simple-single\" package.") | 53 | "Expected contents of the archive entry from the \"simple-single\" package.") |
| 53 | 54 | ||
| 54 | (defvar package-x-test--single-archive-entry-1-4 | 55 | (defvar package-x-test--single-archive-entry-1-4 |
| 55 | (cons 'simple-single | 56 | (cons 'simple-single |
| 56 | (package-make-ac-desc '(1 4) nil | 57 | (package-make-ac-desc '(1 4) nil |
| 57 | "A single-file package with no dependencies" | 58 | "A single-file package with no dependencies" |
| 58 | 'single)) | 59 | 'single |
| 60 | nil)) | ||
| 59 | "Expected contents of the archive entry from the updated \"simple-single\" package.") | 61 | "Expected contents of the archive entry from the updated \"simple-single\" package.") |
| 60 | 62 | ||
| 61 | (ert-deftest package-x-test-upload-buffer () | 63 | (ert-deftest package-x-test-upload-buffer () |