mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Add elisp-tests-with-temp-buffer, a new testing macro
* test/lisp/emacs-lisp/lisp-tests.el (elisp-test-point-marker-regex) New variable. (elisp-tests-with-temp-buffer): New macro to help test functions moving the point and/or mark.
This commit is contained in:
parent
72d7961d67
commit
6d58dda40a
1 changed files with 39 additions and 0 deletions
|
|
@ -5,6 +5,7 @@
|
||||||
;; Author: Aaron S. Hawley <aaron.s.hawley@gmail.com>
|
;; Author: Aaron S. Hawley <aaron.s.hawley@gmail.com>
|
||||||
;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
|
;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
|
||||||
;; Author: Daniel Colascione <dancol@dancol.org>
|
;; Author: Daniel Colascione <dancol@dancol.org>
|
||||||
|
;; Author: Marcin Borkowski <mbork@mbork.pl>
|
||||||
;; Keywords: internal
|
;; Keywords: internal
|
||||||
|
|
||||||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||||
|
|
@ -303,5 +304,43 @@
|
||||||
;; abcdefghijklmnopqrstuv
|
;; abcdefghijklmnopqrstuv
|
||||||
i f a scan-error)
|
i f a scan-error)
|
||||||
|
|
||||||
|
;;; Helpers
|
||||||
|
|
||||||
|
(defvar elisp-test-point-marker-regex "=!\\([a-zA-Z0-9-]+\\)="
|
||||||
|
"A regexp matching placeholders for point position for
|
||||||
|
`elisp-tests-with-temp-buffer'.")
|
||||||
|
|
||||||
|
;; Copied and heavily modified from `python-tests-with-temp-buffer'
|
||||||
|
(defmacro elisp-tests-with-temp-buffer (contents &rest body)
|
||||||
|
"Create an `emacs-lisp-mode' enabled temp buffer with CONTENTS.
|
||||||
|
BODY is the code to be executed within the temp buffer. Point is
|
||||||
|
always located at the beginning of buffer. Special markers of
|
||||||
|
the form =!NAME= in CONTENTS are removed, and a for each one
|
||||||
|
a variable called NAME is bound to the position of such
|
||||||
|
a marker."
|
||||||
|
(declare (indent 1) (debug t))
|
||||||
|
`(with-temp-buffer
|
||||||
|
(emacs-lisp-mode)
|
||||||
|
(insert ,contents)
|
||||||
|
(goto-char (point-min))
|
||||||
|
(while (re-search-forward elisp-test-point-marker-regex nil t)
|
||||||
|
(delete-region (match-beginning 0)
|
||||||
|
(match-end 0)))
|
||||||
|
(goto-char (point-min))
|
||||||
|
,(let (marker-list)
|
||||||
|
(with-temp-buffer
|
||||||
|
(insert (cond ((symbolp contents)
|
||||||
|
(symbol-value contents))
|
||||||
|
(t contents)))
|
||||||
|
(goto-char (point-min))
|
||||||
|
(while (re-search-forward elisp-test-point-marker-regex nil t)
|
||||||
|
(push (list (intern (match-string-no-properties 1))
|
||||||
|
(match-beginning 0))
|
||||||
|
marker-list)
|
||||||
|
(delete-region (match-beginning 0)
|
||||||
|
(match-end 0))))
|
||||||
|
`(let ,marker-list
|
||||||
|
,@body))))
|
||||||
|
|
||||||
(provide 'lisp-tests)
|
(provide 'lisp-tests)
|
||||||
;;; lisp-tests.el ends here
|
;;; lisp-tests.el ends here
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue