[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil-surround 4e739e8ec8 106/175: Merge pull request #118
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil-surround 4e739e8ec8 106/175: Merge pull request #118 from edkolev/use-evil-test-helpers |
Date: |
Mon, 9 Oct 2023 13:01:07 -0400 (EDT) |
branch: elpa/evil-surround
commit 4e739e8ec8dea55465c47d71c6504a0fd3e21013
Merge: 43a2664615 2343fe5497
Author: Filipe Silva <ninrod@users.noreply.github.com>
Commit: GitHub <noreply@github.com>
Merge pull request #118 from edkolev/use-evil-test-helpers
Use `evil-test-helpers` for testing
---
test/evil-surround-test.el | 363 +--------------------------------------------
test/make-update.el | 2 +-
2 files changed, 2 insertions(+), 363 deletions(-)
diff --git a/test/evil-surround-test.el b/test/evil-surround-test.el
index f0ad61de60..bbfe45a47f 100644
--- a/test/evil-surround-test.el
+++ b/test/evil-surround-test.el
@@ -2,6 +2,7 @@
(require 'ert)
(require 'evil)
(require 'evil-surround)
+(require 'evil-test-helpers)
(ert-deftest evil-surround-test ()
(ert-info ("basic surrounding")
@@ -14,365 +15,3 @@
"one 'two' three"
("ds'")
"one two three")))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; 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-surround 5e6bcb38e9 046/175: support for yS, vgS, (continued)
- [nongnu] elpa/evil-surround 5e6bcb38e9 046/175: support for yS, vgS, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround a2aae89579 040/175: Merge pull request #34 from Silex/master, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround ace9ca3292 064/175: Merge pull request #61 from jasminpatry/fix/evil-surround-region-indent, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 714c5cec97 062/175: Merge pull request #64 from hlissner/master, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround d5e1c9ec49 067/175: Fix repetitive prompts with function pairs in block surrounds, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 190b2130bd 080/175: Escape a backtick, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 37a5f9e8d7 077/175: Merge pull request #77 from cute-jumper/master, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 3e4baf7e20 084/175: Merge pull request #80 from mineo/doc-fixes, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 1f59618339 088/175: Merge pull request #88 from LemmingAvalanche/update-links-to-evil, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 0a61b55d1b 081/175: Move the Keywords after the Mailing list header, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 4e739e8ec8 106/175: Merge pull request #118 from edkolev/use-evil-test-helpers,
ELPA Syncer <=
- [nongnu] elpa/evil-surround 27dc66d5d8 093/175: closes #91: evil-surround-pairs-alist typo, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 966dc25c96 076/175: Add missing evil package dependency, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 5a45da3d71 101/175: add melpa badge, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround b41116a613 087/175: Point to new repository for Evil, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround fe6351b8fe 094/175: Fix defcustom type specification for pairs-alist variable, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 5ea0a9ae5a 108/175: Remove debug messages, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 9b3986432e 100/175: fix travis badge, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 2343fe5497 105/175: Use `evil-test-helpers` for testing, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 6ed0750414 107/175: Add examples from readme as automated tests, ELPA Syncer, 2023/10/09
- [nongnu] elpa/evil-surround 1d4e72a178 099/175: closes #98: orgify readme, ELPA Syncer, 2023/10/09