summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/ert-x.el
diff options
context:
space:
mode:
authorStefan Kangas <stefan@marxist.se>2021-11-06 21:54:02 +0100
committerStefan Kangas <stefan@marxist.se>2021-11-07 01:54:30 +0100
commit5dd27fef5885bf0f6ec3b12bad7972276834ccfa (patch)
treebc982d44266a2113172406affe4e4a3a12bf2aca /lisp/emacs-lisp/ert-x.el
parent9dfd945a2c2055b1af869a685eb2a667daf4daca (diff)
downloademacs-5dd27fef5885bf0f6ec3b12bad7972276834ccfa.tar.gz
Add generated suffix to test temp file names
* lisp/emacs-lisp/ert-x.el (ert-with-temp-file): Add temp file name suffix based on file name of caller. Reflow docstring. (ert--with-temp-file-generate-suffix): New defun. * test/lisp/emacs-lisp/ert-x-tests.el (ert-x-tests--with-temp-file-generate-suffix): New test.
Diffstat (limited to 'lisp/emacs-lisp/ert-x.el')
-rw-r--r--lisp/emacs-lisp/ert-x.el29
1 files changed, 22 insertions, 7 deletions
diff --git a/lisp/emacs-lisp/ert-x.el b/lisp/emacs-lisp/ert-x.el
index 2af956c8a6d..752ac3bfdd4 100644
--- a/lisp/emacs-lisp/ert-x.el
+++ b/lisp/emacs-lisp/ert-x.el
@@ -352,7 +352,6 @@ convert it to a string and pass it to COLLECTOR first."
(defvar ert-resource-directory-trim-right-regexp "\\(-tests?\\)?\\.el"
"Regexp for `string-trim' (right) used by `ert-resource-directory'.")
-;; Has to be a macro for `load-file-name'.
(defmacro ert-resource-directory ()
"Return absolute file name of the resource (test data) directory.
@@ -392,6 +391,17 @@ directory as returned by `ert-resource-directory'."
(defvar ert-temp-file-suffix nil
"Prefix used by `ert-with-temp-file' and `ert-with-temp-directory'.")
+(defun ert--with-temp-file-generate-suffix (filename)
+ "Generate temp file suffix from FILENAME."
+ (thread-last
+ (file-name-base filename)
+ (replace-regexp-in-string (rx string-start
+ (group (+? not-newline))
+ (regexp "-?tests?")
+ string-end)
+ "\\1")
+ (concat "-")))
+
(defmacro ert-with-temp-file (name &rest body)
"Bind NAME to the name of a new temporary file and evaluate BODY.
Delete the temporary file after BODY exits normally or
@@ -401,12 +411,15 @@ file.
The following keyword arguments are supported:
:prefix STRING If non-nil, pass STRING to `make-temp-file' as
- the PREFIX argument. Otherwise, use the value
- of `ert-temp-file-prefix'.
+ the PREFIX argument. Otherwise, use the value of
+ `ert-temp-file-prefix'.
-:suffix STRING If non-nil, pass STRING to `make-temp-file' as
- the SUFFIX argument. Otherwise, use the value
- of `ert-temp-file-suffix'.
+:suffix STRING If non-nil, pass STRING to `make-temp-file' as the
+ SUFFIX argument. Otherwise, use the value of
+ `ert-temp-file-suffix'; if the value of that
+ variable is nil, generate a suffix based on the
+ name of the file that `ert-with-temp-file' is
+ called from.
:text STRING If non-nil, pass STRING to `make-temp-file' as
the TEXT argument.
@@ -427,7 +440,9 @@ See also `ert-with-temp-directory'."
(error "Invalid keywords: %s" (mapconcat #'symbol-name extra-keywords " ")))
(let ((temp-file (make-symbol "temp-file"))
(prefix (or prefix ert-temp-file-prefix))
- (suffix (or suffix ert-temp-file-suffix)))
+ (suffix (or suffix ert-temp-file-suffix
+ (ert--with-temp-file-generate-suffix
+ (or (macroexp-file-name) buffer-file-name)))))
`(let* ((,temp-file (,(if directory 'file-name-as-directory 'identity)
(make-temp-file ,prefix ,directory ,suffix ,text)))
(,name ,temp-file))