[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil-goggles 7aaddd2d84 092/225: Use `evil-test-helpers` f
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil-goggles 7aaddd2d84 092/225: Use `evil-test-helpers` for testing |
Date: |
Wed, 12 Jan 2022 08:58:59 -0500 (EST) |
branch: elpa/evil-goggles
commit 7aaddd2d847375be9b157201268582a1bd5d57e0
Author: Evgeni Kolev <evgenysw@gmail.com>
Commit: Evgeni Kolev <evgenysw@gmail.com>
Use `evil-test-helpers` for testing
---
test/evil-goggles-test.el | 376 +---------------------------------------------
test/make-update.el | 2 +-
2 files changed, 8 insertions(+), 370 deletions(-)
diff --git a/test/evil-goggles-test.el b/test/evil-goggles-test.el
index 2b71a7d533..c951da261a 100644
--- a/test/evil-goggles-test.el
+++ b/test/evil-goggles-test.el
@@ -2,6 +2,7 @@
(require 'ert)
(require 'evil)
(require 'evil-goggles)
+(require 'evil-test-helpers)
(evil-goggles-mode)
@@ -9,14 +10,14 @@
:tags '(evil-goggles)
(ert-info ("delete interactive")
(evil-test-buffer
- "line"
- ("dd")
- ""))
+ "line"
+ ("dd")
+ ""))
(ert-info ("delete non-interactive")
(evil-test-buffer
- "line"
- (evil-delete (point-min) (point-max))
- "")))
+ "line"
+ (evil-delete (point-min) (point-max))
+ "")))
(ert-deftest evil-test-last-insert-register ()
"Test last insertion register."
@@ -26,366 +27,3 @@
"line 1\nAB[C]"
("gg\".P")
"AB[C]line 1\nABC"))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; code below is copied from evil-tests.el
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(defvar evil-test-point nil
- "Marker for point.")
-(make-variable-buffer-local 'evil-test-point)
-(defvar evil-test-visual-start nil
- "Marker for Visual beginning.")
-(make-variable-buffer-local 'evil-test-visual-start)
-(defvar evil-test-visual-end nil
- "Marker for Visual end.")
-(make-variable-buffer-local 'evil-test-visual-end)
-
-
-(defmacro evil-test-buffer (&rest body)
- "Execute FORMS in a temporary buffer.
-The following optional keywords specify the buffer's properties:
-:state STATE The initial state, defaults to `normal'.
-:visual SELECTION The Visual selection, defaults to `char'.
-:point-start STRING String for matching beginning of point,
- defaults to \"[\".
-:point-end STRING String for matching end of point,
- defaults to \"]\".
-:visual-start STRING String for matching beginning of
- Visual selection, defaults to \"<\".
-:visual-end STRING String for matching end of
- Visual selection, defaults to \">\".
-Then follows one or more forms. If the first form is a string,
-it is taken to be a buffer description as passed to
-`evil-test-buffer-from-string', and initializes the buffer.
-Subsequent string forms validate the buffer.
-If a form is a list of strings or vectors, it is taken to be a
-key sequence and is passed to `execute-kbd-macro'. If the form
-is \(file FILENAME CONTENTS), then the test fails unless the
-contents of FILENAME equal CONTENTS. If the form is \(error
-SYMBOL ...) then the test fails unless an error of type SYMBOL is
-raised. Remaining forms are evaluated as-is.
-\(fn [[KEY VALUE]...] FORMS...)"
- (declare (indent defun))
- (let ((state 'normal)
- arg key point-start point-end string
- visual visual-start visual-end)
- ;; collect keywords
- (while (keywordp (car-safe body))
- (setq key (pop body)
- arg (pop body))
- (cond
- ((eq key :point-start)
- (setq point-start (or arg "")))
- ((eq key :point-end)
- (setq point-end (or arg "")))
- ((eq key :state)
- (setq state arg))
- ((eq key :visual)
- (setq visual arg))
- ((eq key :visual-start)
- (setq visual-start (or arg "")))
- ((eq key :visual-end)
- (setq visual-end (or arg "")))))
- ;; collect buffer initialization
- (when (stringp (car-safe body))
- (setq string (pop body)))
- ;; macro expansion
- `(let ((buffer (evil-test-buffer-from-string
- ,string ',state
- ,point-start ,point-end
- ',visual ,visual-start ,visual-end))
- (kill-ring kill-ring)
- (kill-ring-yank-pointer kill-ring-yank-pointer)
- x-select-enable-clipboard
- message-log-max)
- (unwind-protect
- (save-window-excursion
- (with-current-buffer buffer
- ;; necessary for keyboard macros to work
- (switch-to-buffer-other-window (current-buffer))
- (buffer-enable-undo)
- (undo-tree-mode 1)
- ;; parse remaining forms
- ,@(mapcar
- #'(lambda (form)
- (let (error-symbol)
- (when (and (listp form)
- (eq (car-safe form) 'error))
- (setq error-symbol (car-safe (cdr-safe form))
- form (cdr-safe (cdr-safe form))))
- (let ((result
- (cond
- ((stringp form)
- `(evil-test-buffer-string
- ,form
- ',point-start ',point-end
- ',visual-start ',visual-end))
- ((eq (car-safe form) 'file)
- `(evil-test-file-contents ,(cadr form)
- ,(caddr form)))
- ((or (stringp (car-safe form))
- (vectorp (car-safe form))
- (memq (car-safe (car-safe form))
- '(kbd vconcat)))
- ;; we need to execute everything as a single
- ;; sequence for command loop hooks to work
- `(execute-kbd-macro
- (apply #'vconcat
- (mapcar #'listify-key-sequence
- (mapcar #'eval ',form)))))
- ((memq (car-safe form) '(kbd vconcat))
- `(execute-kbd-macro ,form))
- (t
- form))))
- (if error-symbol
- `(should-error ,result :type ',error-symbol)
- result))))
- body)))
- (and (buffer-name buffer)
- (kill-buffer buffer))))))
-
-(when (fboundp 'font-lock-add-keywords)
- (font-lock-add-keywords 'emacs-lisp-mode
- '(("(\\(evil-test-buffer\\)\\>"
- 1 font-lock-keyword-face))))
-
-(defun evil-test-buffer-string (string &optional
- point-start point-end
- visual-start visual-end)
- "Validate the current buffer according to STRING.
-If STRING contains an occurrence of POINT-START immediately
-followed by POINT-END, that position is compared against point.
-If STRING contains an occurrence of VISUAL-START followed by
-VISUAL-END, those positions are compared against the Visual selection.
-POINT-START and POINT-END default to [ and ].
-VISUAL-START and VISUAL-END default to < and >."
- (let ((actual-buffer (current-buffer))
- (marker-buffer (evil-test-marker-buffer-from-string
- string
- point-start point-end
- visual-start visual-end))
- before-point after-point string selection)
- (unwind-protect
- (with-current-buffer marker-buffer
- (setq string (buffer-string))
- (when evil-test-point
- (setq before-point (buffer-substring (point-min) evil-test-point)
- after-point (buffer-substring evil-test-point (point-max))))
- (when (and evil-test-visual-start evil-test-visual-end)
- (setq selection (buffer-substring
- evil-test-visual-start evil-test-visual-end)))
- (with-current-buffer actual-buffer
- (if (or before-point after-point)
- (evil-test-text before-point after-point)
- ;; if the cursor isn't specified, just test the whole buffer
- (save-excursion
- (goto-char (point-min))
- (evil-test-text nil string #'bobp #'eobp)))
- (when selection
- (evil-test-selection selection))))
- (kill-buffer marker-buffer))))
-
-(defun evil-test-buffer-from-string (string &optional
- state
- point-start point-end
- visual visual-start visual-end)
- "Create a new buffer according to STRING.
-If STRING contains an occurrence of POINT-START immediately
-followed by POINT-END, then point is moved to that position.
-If STRING contains an occurrence of VISUAL-START followed by
-VISUAL-END, then a Visual selection is created with those boundaries.
-POINT-START and POINT-END default to [ and ].
-VISUAL-START and VISUAL-END default to < and >.
-STATE is the initial state; it defaults to `normal'.
-VISUAL is the Visual selection: it defaults to `char'."
- (let ((type (evil-visual-type (or visual 'char)))
- (buffer (evil-test-marker-buffer-from-string
- string point-start point-end
- visual-start visual-end)))
- (with-current-buffer buffer
- (prog1 buffer
- (evil-change-state state)
- ;; let the buffer change its major mode without disabling Evil
- (add-hook 'after-change-major-mode-hook #'evil-initialize)
- (when (and (markerp evil-test-visual-start)
- (markerp evil-test-visual-end))
- (evil-visual-select
- evil-test-visual-start evil-test-visual-end type)
- (when evil-test-point
- (goto-char evil-test-point)
- (evil-visual-refresh)
- (unless (and (= evil-visual-beginning
- evil-test-visual-start)
- (= evil-visual-end
- evil-test-visual-end))
- (evil-visual-select
- evil-test-visual-start evil-test-visual-end type -1)
- (goto-char evil-test-point)
- (evil-visual-refresh))))
- (when (markerp evil-test-point)
- (goto-char evil-test-point))))))
-
-(defun evil-test-marker-buffer-from-string (string &optional
- point-start point-end
- visual-start visual-end)
- "Create a new marker buffer according to STRING.
-If STRING contains an occurrence of POINT-START immediately
-followed by POINT-END, that position is stored in the
-buffer-local variable `evil-test-point'. Similarly,
-if STRING contains an occurrence of VISUAL-START followed by
-VISUAL-END, those positions are stored in the variables
-`evil-test-visual-beginning' and `evil-test-visual-end'.
-POINT-START and POINT-END default to [ and ].
-VISUAL-START and VISUAL-END default to < and >."
- (let ((string (or string ""))
- (point-start (regexp-quote
- (if (characterp point-start)
- (string point-start)
- (or point-start "["))))
- (point-end (regexp-quote
- (if (characterp point-end)
- (string point-end)
- (or point-end "]"))))
- (visual-start (regexp-quote
- (if (characterp visual-start)
- (string visual-start)
- (or visual-start "<"))))
- (visual-end (regexp-quote
- (if (characterp visual-end)
- (string visual-end)
- (or visual-end ">")))))
- (with-current-buffer (generate-new-buffer " *test*")
- (prog1 (current-buffer)
- (save-excursion
- (insert string))
- (save-excursion
- (when (> (length point-start) 0)
- (if (> (length point-end) 0)
- (when (re-search-forward
- (format "\\(%s\\)[^%s]?\\(%s\\)"
- point-start point-end point-end) nil t)
- (goto-char (match-beginning 0))
- (delete-region (match-beginning 2) (match-end 2))
- (delete-region (match-beginning 1) (match-end 1))
- (setq evil-test-point
- (move-marker (make-marker) (point))))
- (when (re-search-forward point-start nil t)
- (goto-char (match-beginning 0))
- (delete-region (match-beginning 0) (match-end 0))
- (setq evil-test-point
- (move-marker (make-marker) (point)))))))
- (save-excursion
- (when (and (> (length visual-start) 0)
- (> (length visual-end) 0))
- (when (re-search-forward visual-start nil t)
- (goto-char (match-beginning 0))
- (delete-region (match-beginning 0) (match-end 0))
- (setq evil-test-visual-start
- (move-marker (make-marker) (point))))
- (when (re-search-forward visual-end nil t)
- (goto-char (match-beginning 0))
- (delete-region (match-beginning 0) (match-end 0))
- (setq evil-test-visual-end
- (move-marker (make-marker) (point))))))))))
-
-(defun evil-test-text (before after &optional before-predicate after-predicate)
- "Verify the text around point.
-BEFORE is the expected text before point, and AFTER is
-the text after point. BEFORE-PREDICATE is a predicate function
-to execute at the beginning of the text, and AFTER-PREDICATE
-is executed at the end."
- (when before
- (if (functionp before)
- (setq before-predicate before
- before nil)
- (should (string= (buffer-substring
- (max (point-min) (- (point) (length before)))
- (point))
- before))))
- (when after
- (if (functionp after)
- (setq after-predicate after
- after nil)
- (should (string= (buffer-substring
- (point)
- (min (point-max) (+ (point) (length after))))
- after))))
- (when before-predicate
- (ert-info ((format "Expect `%s' at the beginning" before-predicate))
- (save-excursion
- (backward-char (length before))
- (should (funcall before-predicate)))))
- (when after-predicate
- (ert-info ((format "Expect `%s' at the end" after-predicate))
- (save-excursion
- (forward-char (length after))
- (should (funcall after-predicate))))))
-
-(defmacro evil-test-selection (string &optional end-string
- before-predicate after-predicate)
- "Verify that the Visual selection contains STRING."
- (declare (indent defun))
- `(progn
- (save-excursion
- (goto-char (or evil-visual-beginning (region-beginning)))
- (evil-test-text nil (or ,string ,end-string) ,before-predicate))
- (save-excursion
- (goto-char (or evil-visual-end (region-end)))
- (evil-test-text (or ,end-string ,string) nil nil ,after-predicate))))
-
-(defmacro evil-test-region (string &optional end-string
- before-predicate after-predicate)
- "Verify that the region contains STRING."
- (declare (indent defun))
- `(progn
- (save-excursion
- (goto-char (region-beginning))
- (evil-test-text nil (or ,string ,end-string) ,before-predicate))
- (save-excursion
- (goto-char (region-end))
- (evil-test-text (or ,end-string ,string) nil nil ,after-predicate))))
-
-(defmacro evil-test-overlay (overlay string &optional end-string
- before-predicate after-predicate)
- "Verify that OVERLAY contains STRING."
- (declare (indent defun))
- `(progn
- (save-excursion
- (goto-char (overlay-start ,overlay))
- (evil-test-text nil (or ,string ,end-string) ,before-predicate))
- (save-excursion
- (goto-char (overlay-end ,overlay))
- (evil-test-text (or ,end-string ,string) nil nil ,after-predicate))))
-
-(defun evil-temp-filename ()
- "Return an appropriate temporary filename."
- (make-temp-name (expand-file-name "evil-test"
- temporary-file-directory)))
-
-(defmacro evil-with-temp-file (file-var content &rest body)
- "Create a temp file with CONTENT and bind its name to FILE-VAR within BODY.
-FILE-VAR must be a symbol which contains the name of the
-temporary file within the macro body. CONTENT is either a string
-to be used as the content of the temporary file or a form to be
-executed with the temporary file's buffer as \(current-buffer),
-see `with-temp-file'. BODY contains the forms to be executed
-while the temporary file exists. The temporary file is deleted at
-the end of the execution of BODY."
- (declare (indent 2)
- (debug (symbolp form body)))
- `(let ((,file-var (evil-temp-filename)))
- (with-temp-file ,file-var
- ,(if (stringp content)
- `(insert ,content)
- content))
- ,@body
- (delete-file ,file-var)))
-
-(defun evil-test-file-contents (name contents)
- "Ensure that the contents of file with NAME equal CONTENTS."
- (with-temp-buffer
- (insert-file-contents name)
- (should (string= (buffer-string)
- contents))))
diff --git a/test/make-update.el b/test/make-update.el
index d412f4bc7d..1c884b4bee 100644
--- a/test/make-update.el
+++ b/test/make-update.el
@@ -8,7 +8,7 @@
(package-refresh-contents)
(defconst dev-packages
- '(evil))
+ '(evil evil-test-helpers))
(dolist (package dev-packages)
(unless (package-installed-p package)
- [nongnu] elpa/evil-goggles 6645070a0c 068/225: Add helper `evil-goggles-use-diff-faces`, (continued)
- [nongnu] elpa/evil-goggles 6645070a0c 068/225: Add helper `evil-goggles-use-diff-faces`, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 7f09345024 069/225: Update README, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles c405e0e58f 074/225: Update README, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 10285be578 073/225: Improve doc for on/off custom vars, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 126b9f77aa 076/225: Update README.md, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles d2dfe823d5 077/225: Remove deprecated variable evil-goggles-faces-alist, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles bb49e3a001 078/225: Make travis catch compilation warnings, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 5b9a3af1af 080/225: Make pasting from a register show the goggles overlay, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 3d71c2c24c 081/225: Add support for evil-set-marker, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 2b7331aa62 082/225: Make checkdoc happy, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 7aaddd2d84 092/225: Use `evil-test-helpers` for testing,
ELPA Syncer <=
- [nongnu] elpa/evil-goggles 8738d28e48 091/225: Improve doc, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 02d649ccde 101/225: Enable undo/redo by default, it's no longer experimental, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 1ffd97d6b8 102/225: add support for evil-nerd-commenter, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 33ea1247a7 109/225: Add helper to make evil-goggles use magit-diff-* faces, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles e14b865d80 114/225: Don't ignore foreground color when not pulsing. Fix #16, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 856cb548c3 123/225: Define per-action durations, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 8b3889332c 126/225: Use new funcs/macros which support duration per operation, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 90da624f36 115/225: Improve docs, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 92d614e731 119/225: Display the hint after indenting and "replacing with register" #7, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles c7e3f6ff17 116/225: Remove incorrectly commited snippet, ELPA Syncer, 2022/01/12