diff options
Diffstat (limited to 'test/lisp/use-package/use-package-tests.el')
-rw-r--r-- | test/lisp/use-package/use-package-tests.el | 1210 |
1 files changed, 0 insertions, 1210 deletions
diff --git a/test/lisp/use-package/use-package-tests.el b/test/lisp/use-package/use-package-tests.el deleted file mode 100644 index 7f0dfe3dd73..00000000000 --- a/test/lisp/use-package/use-package-tests.el +++ /dev/null @@ -1,1210 +0,0 @@ -;;; use-package-tests.el --- Tests for use-package.el - -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2, or (at -;; your option) any later version. - -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; - - -;;; Code: - -(require 'ert) -(require 'use-package) - -(setq use-package-always-ensure nil - use-package-verbose 'errors - use-package-expand-minimally t - max-lisp-eval-depth 8000 - max-specpdl-size 8000) - -(unless (fboundp 'macroexpand-1) - (defun macroexpand-1 (form &optional environment) - "Perform (at most) one step of macroexpansion." - (cond - ((consp form) - (let* ((head (car form)) - (env-expander (assq head environment))) - (if env-expander - (if (cdr env-expander) - (apply (cdr env-expander) (cdr form)) - form) - (if (not (and (symbolp head) (fboundp head))) - form - (let ((def (autoload-do-load (symbol-function head) head 'macro))) - (cond - ;; Follow alias, but only for macros, otherwise we may end up - ;; skipping an important compiler-macro (e.g. cl--block-wrapper). - ((and (symbolp def) (macrop def)) (cons def (cdr form))) - ((not (consp def)) form) - (t - (if (eq 'macro (car def)) - (apply (cdr def) (cdr form)) - form)))))))) - (t form)))) - -(defmacro expand-minimally (form) - `(let ((use-package-verbose 'errors) - (use-package-expand-minimally t)) - (macroexpand-1 ',form))) - -(defmacro match-expansion (form &rest value) - `(should (pcase (expand-minimally ,form) - ,@(mapcar #'(lambda (x) (list x t)) value)))) - -(defun fix-expansion () - (interactive) - (save-excursion - (unless (looking-at "(match-expansion") - (backward-up-list)) - (when (looking-at "(match-expansion") - (search-forward "(use-package") - (goto-char (match-beginning 0)) - (let ((decl (read (current-buffer)))) - (kill-sexp) - (let ((use-package-verbose 'errors) - (use-package-expand-minimally t)) - (insert ?\n ?\` (pp-to-string (macroexpand-1 decl)))))))) - -(bind-key "C-c C-u" #'fix-expansion emacs-lisp-mode-map) - -(eval-when-compile - (defun plist-delete (plist property) - "Delete PROPERTY from PLIST" - (let (p) - (while plist - (if (not (eq property (car plist))) - (setq p (plist-put p (car plist) (nth 1 plist)))) - (setq plist (cddr plist))) - p)) - - ;; `cl-flet' does not work for some of the mocking we do below, while `flet' - ;; always does. - (setplist 'flet (plist-delete (symbol-plist 'flet) 'byte-obsolete-info))) - -(ert-deftest use-package-test-recognize-function () - (should (use-package-recognize-function nil t)) - (should-not (use-package-recognize-function nil)) - (should (use-package-recognize-function t)) - (should (use-package-recognize-function 'sym)) - (should (use-package-recognize-function #'sym)) - (should (use-package-recognize-function (lambda () ...))) - (should (use-package-recognize-function '(lambda () ...))) - (should (use-package-recognize-function #'(lambda () ...))) - - (should-not (use-package-recognize-function 1)) - (should-not (use-package-recognize-function "Hello")) - (should-not (use-package-recognize-function '(nil . nil)))) - -(ert-deftest use-package-test-normalize-function () - (should (equal (use-package-normalize-function nil) nil)) - (should (equal (use-package-normalize-function t) t)) - (should (equal (use-package-normalize-function 'sym) 'sym)) - (should (equal (use-package-normalize-function #'sym) 'sym)) - (should (equal (use-package-normalize-function (lambda () ...)) (lambda () ...))) - (should (equal (use-package-normalize-function '(lambda () ...)) (lambda () ...))) - (should (equal (use-package-normalize-function #'(lambda () ...)) (lambda () ...))) - - (should (equal (use-package-normalize-function 1) 1)) - (should (equal (use-package-normalize-function "Hello") "Hello")) - (should (equal (use-package-normalize-function '(nil . nil)) '(nil . nil)))) - -(ert-deftest use-package-test/:disabled-1 () - (match-expansion - (use-package foo :disabled t) - `())) - -(ert-deftest use-package-test/:preface-1 () - (match-expansion - (use-package foo :preface (t)) - `(progn - (eval-and-compile - (t)) - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:preface-2 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :preface (t)) - `(progn - (eval-and-compile - (eval-when-compile - (with-demoted-errors - "Cannot load foo: %S" nil - (load "foo" nil t))) - (t)) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:preface-3 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo - :preface (preface) - :init (init) - :config (config) - :functions func - :defines def) - `(progn - (eval-and-compile - (defvar def) - (declare-function func "foo") - (eval-when-compile - (with-demoted-errors - "Cannot load foo: %S" nil - (load "foo" nil t))) - (preface)) - (init) - (require 'foo nil nil) - (config) - t)))) - -(ert-deftest use-package-test/:preface-4 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo - :preface (preface) - :init (init) - :config (config) - :functions func - :defines def - :defer t) - `(progn - (eval-and-compile - (defvar def) - (declare-function func "foo") - (eval-when-compile - (with-demoted-errors - "Cannot load foo: %S" nil - (load "foo" nil t))) - (preface)) - (init) - (eval-after-load 'foo - '(progn - (config) - t)))))) - -(ert-deftest use-package-test/:pin-1 () - (match-expansion - (use-package foo :pin foo) - `(progn - (use-package-pin-package 'foo "foo") - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:pin-2 () - (match-expansion - (use-package foo :pin "foo") - `(progn - (use-package-pin-package 'foo "foo") - (require 'foo nil nil)))) - -(ert-deftest use-package-test-normalize/:ensure () - (flet ((norm (&rest args) - (apply #'use-package-normalize/:ensure - 'foopkg :ensure args))) - (should (equal (norm '(t)) t)) - (should (equal (norm '(nil)) nil)) - (should (equal (norm '(sym)) 'sym)) - (should-error (norm '(1))) - (should-error (norm '("Hello"))))) - -(ert-deftest use-package-test/:ensure-1 () - (let ((use-package-always-ensure nil)) - (match-expansion - (use-package foo :ensure t) - `(progn - (use-package-ensure-elpa 'foo 't 'nil) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:ensure-2 () - (let ((use-package-always-ensure t)) - (match-expansion - (use-package foo :ensure t) - `(progn - (use-package-ensure-elpa 'foo 't 'nil) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:ensure-3 () - (let ((use-package-always-ensure nil)) - (match-expansion - (use-package foo :ensure nil) - `(progn - (use-package-ensure-elpa 'foo 'nil 'nil) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:ensure-4 () - (let ((use-package-always-ensure t)) - (match-expansion - (use-package foo :ensure nil) - `(progn - (use-package-ensure-elpa 'foo 'nil 'nil) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:ensure-5 () - (let ((use-package-always-ensure nil)) - (match-expansion - (use-package foo :load-path "foo") - `(progn - (eval-and-compile - (add-to-list 'load-path ,(pred stringp))) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:ensure-6 () - (let ((use-package-always-ensure t)) - (match-expansion - (use-package foo :load-path "foo") - `(progn - (eval-and-compile - (add-to-list 'load-path ,(pred stringp))) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:ensure-7 () - (let ((use-package-always-ensure nil)) - (match-expansion - (use-package foo :ensure nil :load-path "foo") - `(progn - (use-package-ensure-elpa 'foo 'nil 'nil) - (eval-and-compile - (add-to-list 'load-path ,(pred stringp))) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:ensure-8 () - (let ((use-package-always-ensure t)) - (match-expansion - (use-package foo :ensure nil :load-path "foo") - `(progn - (use-package-ensure-elpa 'foo 'nil 'nil) - (eval-and-compile - (add-to-list 'load-path ,(pred stringp))) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:ensure-9 () - (let ((use-package-always-ensure nil)) - (match-expansion - (use-package foo :ensure t :load-path "foo") - `(progn - (use-package-ensure-elpa 'foo 't 'nil) - (eval-and-compile - (add-to-list 'load-path ,(pred stringp))) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:ensure-10 () - (let ((use-package-always-ensure t)) - (match-expansion - (use-package foo :ensure t :load-path "foo") - `(progn - (use-package-ensure-elpa 'foo 't 'nil) - (eval-and-compile - (add-to-list 'load-path ,(pred stringp))) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:ensure-11 () - (let (tried-to-install) - (flet ((use-package-ensure-elpa - (name ensure state &optional no-refresh) - (when ensure - (setq tried-to-install name))) - (require (&rest ignore))) - (use-package foo :ensure t) - (should (eq tried-to-install 'foo))))) - -(ert-deftest use-package-test/:if-1 () - (match-expansion - (use-package foo :if t) - `(when t - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:if-2 () - (match-expansion - (use-package foo :if (and t t)) - `(when (and t t) - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:if-3 () - (match-expansion - (use-package foo :if nil) - `(when nil - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:when-1 () - (match-expansion - (use-package foo :when t) - `(when t - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:when-2 () - (match-expansion - (use-package foo :when (and t t)) - `(when (and t t) - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:when-3 () - (match-expansion - (use-package foo :when nil) - `(when nil - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:unless-1 () - (match-expansion - (use-package foo :unless t) - `(when (not t) - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:unless-2 () - (match-expansion - (use-package foo :unless (and t t)) - `(when (not (and t t)) - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:unless-3 () - (match-expansion - (use-package foo :unless nil) - `(unless nil - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:requires-1 () - (match-expansion - (use-package foo :requires bar) - `(when (featurep 'bar) - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:requires-2 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :requires bar) - `(when (featurep 'bar) - (eval-and-compile - (eval-when-compile - (with-demoted-errors - "Cannot load foo: %S" nil - (load "foo" nil t)))) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:requires-3 () - (match-expansion - (use-package foo :requires (bar quux)) - `(when (not (member nil (mapcar #'featurep '(bar quux)))) - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:requires-4 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :requires bar) - `(when (featurep 'bar) - (eval-and-compile - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil - (load "foo" nil t)))) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:load-path-1 () - (match-expansion - (use-package foo :load-path "bar") - `(progn - (eval-and-compile - (add-to-list 'load-path - ,(pred (apply-partially - #'string= - (expand-file-name - "bar" user-emacs-directory))))) - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:load-path-2 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :load-path "bar") - `(progn - (eval-and-compile - (add-to-list 'load-path - ,(pred (apply-partially - #'string= - (expand-file-name - "bar" user-emacs-directory))))) - (eval-and-compile - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil - (load "foo" nil t)))) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:load-path-3 () - (match-expansion - (use-package foo :load-path ("bar" "quux")) - `(progn - (eval-and-compile - (add-to-list 'load-path - ,(pred (apply-partially - #'string= - (expand-file-name - "bar" user-emacs-directory))))) - (eval-and-compile - (add-to-list 'load-path - ,(pred (apply-partially - #'string= - (expand-file-name - "quux" user-emacs-directory))))) - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:load-path-4 () - (match-expansion - (use-package foo :load-path (lambda () (list "bar" "quux"))) - `(progn - (eval-and-compile - (add-to-list 'load-path - ,(pred (apply-partially - #'string= - (expand-file-name - "bar" user-emacs-directory))))) - (eval-and-compile - (add-to-list 'load-path - ,(pred (apply-partially - #'string= - (expand-file-name - "quux" user-emacs-directory))))) - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:no-require-1 () - (match-expansion - (use-package foo :no-require t) - `nil)) - -(ert-deftest use-package-test/:no-require-2 () - (match-expansion - (use-package foo :no-require t :config (config)) - `(progn - (config) - t))) - -(ert-deftest use-package-test/:no-require-3 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :no-require t) - `(eval-and-compile - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil nil)))))) - -(ert-deftest use-package-test-normalize/:bind () - (flet ((norm (&rest args) - (apply #'use-package-normalize-binder - 'foopkg :bind args))) - (let ((good-values '(:map map-sym - ("str" . sym) ("str" . "str") - ([vec] . sym) ([vec] . "str")))) - (should (equal (norm good-values) good-values))) - (should-error (norm '("foo"))) - (should-error (norm '("foo" . 99))) - (should-error (norm '(99 . sym))))) - -(ert-deftest use-package-test/:bind-1 () - (match-expansion - (use-package foo :bind ("C-k" . key)) - `(progn - (unless (fboundp 'key) - (autoload #'key "foo" nil t)) - (ignore - (bind-keys :package foo ("C-k" . key)))))) - -(ert-deftest use-package-test/:bind*-1 () - (match-expansion - (use-package foo :bind* ("C-k" . key)) - `(progn - (unless (fboundp 'key) - (autoload #'key "foo" nil t)) - (ignore - (bind-keys* :package foo ("C-k" . key)))))) - -(ert-deftest use-package-test/:bind-keymap-1 () - (match-expansion - (use-package foo :bind-keymap ("C-k" . key)) - `(ignore - (bind-key "C-k" - #'(lambda nil - (interactive) - (use-package-autoload-keymap 'key 'foo nil)))))) - -(ert-deftest use-package-test/:bind-keymap*-1 () - (match-expansion - (use-package foo :bind-keymap* ("C-k" . key)) - `(ignore - (bind-key* "C-k" - #'(lambda () - (interactive) - (use-package-autoload-keymap 'key 'foo t)))))) - -(ert-deftest use-package-test/:interpreter-1 () - (match-expansion - (use-package foo :interpreter "interp") - `(progn - (add-to-list 'interpreter-mode-alist '("interp" . foo)) - (unless (fboundp 'foo) - (autoload #'foo "foo" nil t))))) - -(ert-deftest use-package-test/:interpreter-2 () - (match-expansion - (use-package foo :interpreter ("interp" . fun)) - `(progn - (add-to-list 'interpreter-mode-alist '("interp" . fun)) - (unless (fboundp 'fun) - (autoload #'fun "foo" nil t))))) - -(ert-deftest use-package-test-normalize/:mode () - (flet ((norm (&rest args) - (apply #'use-package-normalize/:mode - 'foopkg :mode args))) - (should (equal (norm '(".foo")) - '((".foo" . foopkg)))) - (should (equal (norm '(".foo" ".bar")) - '((".foo" . foopkg) (".bar" . foopkg)))) - (should (equal (norm '((".foo" ".bar"))) - '((".foo" . foopkg) (".bar" . foopkg)))) - (should (equal (norm '((".foo"))) - '((".foo" . foopkg)))) - (should (equal (norm '((".foo" . foo) (".bar" . bar))) - '((".foo" . foo) (".bar" . bar)))))) - -(ert-deftest use-package-test/:mode-1 () - (match-expansion - (use-package foo :mode "interp") - `(progn - (add-to-list 'auto-mode-alist '("interp" . foo)) - (unless (fboundp 'foo) - (autoload #'foo "foo" nil t))))) - -(ert-deftest use-package-test/:mode-2 () - (match-expansion - (use-package foo :mode ("interp" . fun)) - `(progn - (add-to-list 'auto-mode-alist '("interp" . fun)) - (unless (fboundp 'fun) - (autoload #'fun "foo" nil t))))) - -(ert-deftest use-package-test/:magic-1 () - (match-expansion - (use-package foo :magic "interp") - `(progn - (add-to-list 'magic-mode-alist '("interp" . foo)) - (unless (fboundp 'foo) - (autoload #'foo "foo" nil t))))) - -(ert-deftest use-package-test/:magic-2 () - (match-expansion - (use-package foo :magic ("interp" . fun)) - `(progn - (add-to-list 'magic-mode-alist '("interp" . fun)) - (unless (fboundp 'fun) - (autoload #'fun "foo" nil t))))) - -(ert-deftest use-package-test/:magic-fallback-1 () - (match-expansion - (use-package foo :magic-fallback "interp") - `(progn - (add-to-list 'magic-fallback-mode-alist '("interp" . foo)) - (unless (fboundp 'foo) - (autoload #'foo "foo" nil t))))) - -(ert-deftest use-package-test/:magic-fallback-2 () - (match-expansion - (use-package foo :magic-fallback ("interp" . fun)) - `(progn - (add-to-list 'magic-fallback-mode-alist '("interp" . fun)) - (unless (fboundp 'fun) - (autoload #'fun "foo" nil t))))) - -(ert-deftest use-package-test/:commands-1 () - (match-expansion - (use-package foo :commands bar) - `(unless (fboundp 'bar) - (autoload #'bar "foo" nil t)))) - -(ert-deftest use-package-test/:commands-2 () - (match-expansion - (use-package foo :commands (bar quux)) - `(progn - (unless (fboundp 'bar) - (autoload #'bar "foo" nil t)) - (unless (fboundp 'quux) - (autoload #'quux "foo" nil t))))) - -(ert-deftest use-package-test/:commands-3 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :commands (bar quux)) - `(progn - (eval-and-compile - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil - (load "foo" nil t)))) - (unless (fboundp 'bar) - (autoload #'bar "foo" nil t)) - (eval-when-compile - (declare-function bar "foo")) - (unless (fboundp 'quux) - (autoload #'quux "foo" nil t)) - (eval-when-compile - (declare-function quux "foo")))))) - -(ert-deftest use-package-test/:defines-1 () - (match-expansion - (use-package foo :defines bar) - `(require 'foo nil nil))) - -(ert-deftest use-package-test/:defines-2 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :defines bar) - `(progn - (eval-and-compile - (defvar bar) - (eval-when-compile - (with-demoted-errors - "Cannot load foo: %S" nil - (load "foo" nil t)))) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:functions-1 () - (match-expansion - (use-package foo :functions bar) - `(require 'foo nil nil))) - -(ert-deftest use-package-test/:functions-2 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :functions bar) - `(progn - (eval-and-compile - (declare-function bar "foo") - (eval-when-compile - (with-demoted-errors - "Cannot load foo: %S" nil - (load "foo" nil t)))) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:functions-3 () - (match-expansion - (use-package foo :defer t :functions bar) - `nil)) - -(ert-deftest use-package-test/:functions-4 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :defer t :functions bar) - `(eval-and-compile - (declare-function bar "foo") - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil - (load "foo" nil t))))))) - -(ert-deftest use-package-test/:functions-5 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :defer t :config (config) :functions bar) - `(progn - (eval-and-compile - (declare-function bar "foo") - (eval-when-compile - (with-demoted-errors - "Cannot load foo: %S" nil - (load "foo" nil t)))) - (eval-after-load 'foo - '(progn - (config) - t)))))) - -(ert-deftest use-package-test/:defer-1 () - (match-expansion - (use-package foo) - `(require 'foo nil nil))) - -(ert-deftest use-package-test/:defer-2 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo) - `(progn - (eval-and-compile - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil - (load "foo" nil t)))) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:defer-3 () - (match-expansion - (use-package foo :defer t) - `nil)) - -(ert-deftest use-package-test/:defer-4 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :defer t) - `(eval-and-compile - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil - (load "foo" nil t))))))) - -(ert-deftest use-package-test-normalize/:hook () - (flet ((norm (&rest args) - (apply #'use-package-normalize/:hook - 'foopkg :hook args))) - (should-error (norm nil)) - (should (equal (norm '(bar)) - '((bar . foopkg)))) - (should (equal (norm '((bar . baz))) - '((bar . baz)))) - (should (equal (norm '(((bar baz) . quux))) - '(((bar baz) . quux)))) - (should (equal (norm '(bar baz)) - '(((bar baz) . foopkg)))) - (should (equal (norm '((bar baz) (quux bow))) - '(((bar baz) . foopkg) ((quux bow) . foopkg)))) - (should (equal (norm '((bar . baz) (quux . bow))) - '((bar . baz) (quux . bow)))) - (should (equal (norm '(((bar1 bar2) . baz) ((quux1 quux2) . bow))) - '(((bar1 bar2) . baz) ((quux1 quux2) . bow)))))) - -(ert-deftest use-package-test/:hook-1 () - (let ((byte-compile-current-file t)) - (should - (equal - (expand-minimally - (use-package foo - :bind (("C-a" . key)) - :hook (hook . fun))) - '(progn - (eval-and-compile - (eval-when-compile - (with-demoted-errors - "Cannot load foo: %S" nil - (load "foo" nil t)))) - (add-hook 'hook-hook #'fun) - (unless (fboundp 'fun) - (autoload #'fun "foo" nil t)) - (eval-when-compile - (declare-function fun "foo")) - (unless (fboundp 'key) - (autoload #'key "foo" nil t)) - (eval-when-compile - (declare-function key "foo")) - (ignore - (bind-keys :package foo ("C-a" . key)))))))) - -(ert-deftest use-package-test-normalize/:custom () - (flet ((norm (&rest args) - (apply #'use-package-normalize/:custom - 'foopkg :custom args))) - (should-error (norm nil)) - (should-error (norm '(bar))) - ;; (should-error (norm '((foo bar baz quux)))) - (should (equal (norm '(foo bar)) '((foo bar)))) - ;; (should-error (norm '(foo bar baz))) - ;; (should (equal (norm '(foo bar "baz")) - ;; '((foo bar baz)))) - )) - -(ert-deftest use-package-test/:custom-1 () - (match-expansion - (use-package foo :custom (foo bar)) - `(progn - (customize-set-variable 'foo bar "Customized with use-package foo") - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:custom-face-1 () - (match-expansion - (use-package foo :custom-face (foo ((t (:background "#e4edfc"))))) - `(progn - (custom-set-faces '(foo ((t (:background "#e4edfc"))))) - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:init-1 () - (match-expansion - (use-package foo :init (init)) - `(progn - (init) - (require 'foo nil nil)))) - -(ert-deftest use-package-test/:init-2 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :init (init)) - `(progn - (eval-and-compile - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil - (load "foo" nil t)))) - (init) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:after-1 () - (match-expansion - (use-package foo :after bar) - `(eval-after-load 'bar - '(require 'foo nil nil)))) - -(ert-deftest use-package-test/:after-2 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :after bar) - `(progn - (eval-and-compile - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil - (load "foo" nil t)))) - (eval-after-load 'bar - '(require 'foo nil nil)))))) - -(ert-deftest use-package-test/:after-3 () - (match-expansion - (use-package foo :after (bar quux)) - `(eval-after-load 'quux - '(eval-after-load 'bar - '(require 'foo nil nil))))) - -(ert-deftest use-package-test/:after-4 () - (match-expansion - (use-package foo :after (:all bar quux)) - `(eval-after-load 'quux - '(eval-after-load 'bar - '(require 'foo nil nil))))) - -(ert-deftest use-package-test/:after-5 () - (match-expansion - (use-package foo :after (:any bar quux)) - `(lexical-let ,_ - (lexical-let ,_ - (progn - (eval-after-load 'bar - `(funcall ,_)) - (eval-after-load 'quux - `(funcall ,_))))))) - -(ert-deftest use-package-test/:after-6 () - (match-expansion - (use-package foo :after (:all (:any bar quux) bow)) - `(lexical-let ,_ - (lexical-let ,_ - (eval-after-load 'bow - '(progn - (eval-after-load 'bar - `(funcall ,_)) - (eval-after-load 'quux - `(funcall ,_)))))))) - -(ert-deftest use-package-test/:after-7 () - (match-expansion - (use-package foo :after (:any (:all bar quux) bow)) - `(lexical-let ,_ - (lexical-let ,_ - (progn - (eval-after-load 'quux - '(eval-after-load 'bar - `(funcall ,_))) - (eval-after-load 'bow - `(funcall ,_))))))) - -(ert-deftest use-package-test/:after-8 () - (match-expansion - (use-package foo :after (:all (:any bar quux) (:any bow baz))) - `(lexical-let ,_ - (lexical-let ,_ - (progn - (eval-after-load 'bow - '(progn - (eval-after-load 'bar - `(funcall ,_)) - (eval-after-load 'quux - `(funcall ,_)))) - (eval-after-load 'baz - '(progn - (eval-after-load 'bar - `(funcall ,_)) - (eval-after-load 'quux - `(funcall ,_))))))))) - -(ert-deftest use-package-test/:after-9 () - (match-expansion - (use-package foo :after (:any (:all bar quux) (:all bow baz))) - `(lexical-let ,_ - (lexical-let ,_ - (progn - (eval-after-load 'quux - '(eval-after-load 'bar - `(funcall ,_))) - (eval-after-load 'baz - '(eval-after-load 'bow - `(funcall ,_)))))))) - -(ert-deftest use-package-test/:after-10 () - (match-expansion - (use-package foo :after (:any (:all bar quux) (:any bow baz))) - `(lexical-let ,_ - (lexical-let ,_ - (progn - (eval-after-load 'quux - '(eval-after-load 'bar - `(funcall ,_))) - (progn - (eval-after-load 'bow - `(funcall ,_)) - (eval-after-load 'baz - `(funcall ,_)))))))) - -(ert-deftest use-package-test/:demand-1 () - (match-expansion - (use-package foo :demand t) - `(require 'foo nil nil))) - -(ert-deftest use-package-test/:demand-2 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :demand t) - `(progn - (eval-and-compile - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil - (load "foo" nil t)))) - (require 'foo nil nil))))) - -(ert-deftest use-package-test/:demand-3 () - (match-expansion - (use-package foo :demand t :config (config)) - `(progn - (require 'foo nil nil) - (config) - t))) - -(ert-deftest use-package-test/:demand-4 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :demand t :config (config)) - `(progn - (eval-and-compile - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil - (load "foo" nil t)))) - (require 'foo nil nil) - (config) - t)))) - -(ert-deftest use-package-test/:demand-5 () - ;; #529 - :demand should not override an explicit use of :after - (match-expansion - (use-package foo :demand t :after bar) - `(eval-after-load 'bar - '(require 'foo nil nil)))) - -(ert-deftest use-package-test/:demand-6 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :demand t :after bar) - `(progn - (eval-and-compile - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil - (load "foo" nil t)))) - (eval-after-load 'bar - '(require 'foo nil nil)))))) - -;; (ert-deftest use-package-test/:demand-7 () -;; (match-expansion -;; (use-package counsel -;; :load-path "site-lisp/swiper" -;; :after ivy -;; :demand t -;; :diminish -;; :bind (("C-*" . counsel-org-agenda-headlines) -;; ("M-x" . counsel-M-x)) -;; :commands (counsel-minibuffer-history -;; counsel-find-library -;; counsel-unicode-char) -;; :preface (preface-code) -;; :init -;; ;; This is actually wrong, but it's just part of the example. -;; (define-key minibuffer-local-map (kbd "M-r") -;; 'counsel-minibuffer-history)) -;; `(progn -;; (eval-and-compile -;; (add-to-list 'load-path "/Users/johnw/.emacs.d/site-lisp/swiper")) -;; (eval-and-compile -;; (preface-code)) -;; (eval-after-load 'ivy -;; '(progn -;; (define-key minibuffer-local-map (kbd "M-r") -;; 'counsel-minibuffer-history) -;; (require 'counsel nil nil) -;; (if (fboundp 'diminish) -;; (diminish 'counsel-mode)) -;; (ignore -;; (bind-keys :package counsel -;; ("C-*" . counsel-org-agenda-headlines) -;; ("M-x" . counsel-M-x)))))))) - -(ert-deftest use-package-test/:config-1 () - (match-expansion - (use-package foo :config (config)) - `(progn - (require 'foo nil nil) - (config) - t))) - -(ert-deftest use-package-test/:config-2 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :config (config)) - `(progn - (eval-and-compile - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil - (load "foo" nil t)))) - (require 'foo nil nil) - (config) - t)))) - -(ert-deftest use-package-test/:config-3 () - (match-expansion - (use-package foo :defer t :config (config)) - `(eval-after-load 'foo - '(progn - (config) - t)))) - -(ert-deftest use-package-test/:config-4 () - (let ((byte-compile-current-file t)) - (match-expansion - (use-package foo :defer t :config (config)) - `(progn - (eval-and-compile - (eval-when-compile - (with-demoted-errors "Cannot load foo: %S" nil - (load "foo" nil t)))) - (eval-after-load 'foo - '(progn - (config) - t)))))) - -(ert-deftest use-package-test-normalize/:diminish () - (should (equal (use-package-normalize-diminish 'foopkg :diminish nil) - '(foopkg-mode))) - (should (equal (use-package-normalize-diminish 'foopkg :diminish 'bar) - '(bar))) - (should (equal (use-package-normalize-diminish 'foopkg :diminish "bar") - '((foopkg-mode . "bar")))) - (should (equal (use-package-normalize-diminish 'foopkg :diminish 'foo-mode) - '(foo-mode))) - (should (equal (use-package-normalize-diminish 'foopkg :diminish '(foo . "bar")) - '((foo . "bar"))))) - -(ert-deftest use-package-test/:diminish-1 () - (match-expansion - (use-package foo :diminish nil) - `(progn - (require 'foo nil nil) - (if (fboundp 'diminish) - (diminish 'foo-mode))))) - -(ert-deftest use-package-test/:diminish-2 () - (match-expansion - (use-package foo :diminish bar) - `(progn - (require 'foo nil nil) - (if (fboundp 'diminish) - (diminish 'bar))))) - -(ert-deftest use-package-test/:diminish-3 () - (match-expansion - (use-package foo :diminish "bar") - `(progn - (require 'foo nil nil) - (if (fboundp 'diminish) - (diminish 'foo-mode "bar"))))) - -(ert-deftest use-package-test/:diminish-4 () - (match-expansion - (use-package foo :diminish (foo . "bar")) - `(progn - (require 'foo nil nil) - (if (fboundp 'diminish) - (diminish 'foo "bar"))))) - -(ert-deftest use-package-test-normalize/:delight () - (should (equal `((foo-mode nil foo)) - (use-package-normalize/:delight 'foo :delight nil))) - (should (equal `((foo-mode nil foo-mode)) - (use-package-normalize/:delight 'foo-mode :delight nil))) - (should (equal `((bar-mode nil foo)) - (use-package-normalize/:delight 'foo :delight '(bar-mode)))) - (should (equal `((bar-mode nil :major)) - (use-package-normalize/:delight 'foo :delight '((bar-mode nil :major))))) - (should (equal `((foo-mode "abc" foo)) - (use-package-normalize/:delight 'foo :delight '("abc")))) - (should (equal `((foo-mode (:eval 1) foo)) - (use-package-normalize/:delight 'foo :delight '('(:eval 1))))) - (should (equal (use-package-normalize/:delight 'foo :delight '((a-mode) (b-mode " b"))) - `((a-mode nil foo) (b-mode " b" foo)))) - (should-error (use-package-normalize/:delight 'foo :delight '((:eval 1))))) - -(ert-deftest use-package-test/:delight-1 () - (match-expansion - (use-package foo :delight) - `(progn - (require 'foo nil nil) - (if (fboundp 'delight) - (delight '((foo-mode nil foo))))))) - -(ert-deftest use-package-test/:delight-2 () - (should-error - (match-expansion - (use-package foo :delight nil) - `(progn - (require 'foo nil nil) - (if (fboundp 'diminish) - (diminish 'foo-mode)))))) - -(ert-deftest use-package-test/:delight-3 () - (match-expansion - (use-package foo :delight bar) - `(progn - (require 'foo nil nil) - (if (fboundp 'delight) - (delight '((bar nil foo))))))) - -(ert-deftest use-package-test/:delight-4 () - (match-expansion - (use-package foo :delight "bar") - `(progn - (require 'foo nil nil) - (if (fboundp 'delight) - (delight '((foo-mode "bar" foo))))))) - -(ert-deftest use-package-test/:delight-5 () - (should-error - (match-expansion - (use-package foo :delight (foo . "bar")) - `(progn - (require 'foo nil nil) - (if (fboundp 'diminish) - (diminish 'foo "bar")))))) - -(ert-deftest use-package-test/:delight-6 () - (match-expansion - (use-package foo :delight (foo "bar")) - `(progn - (require 'foo nil nil) - (if (fboundp 'delight) - (delight '((foo "bar" foo))))))) - -;; Local Variables: -;; indent-tabs-mode: nil -;; no-byte-compile: t -;; no-update-autoloads: t -;; End: - -;;; use-package-tests.el ends here |