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.
This commit is contained in:
parent
9dfd945a2c
commit
5dd27fef58
2 changed files with 31 additions and 7 deletions
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -271,6 +271,15 @@ desired effect."
|
|||
(cl-loop for x in '(0 1 2 3 4 t) do
|
||||
(should (equal (c x) (lisp x))))))
|
||||
|
||||
(ert-deftest ert-x-tests--with-temp-file-generate-suffix ()
|
||||
(should (equal (ert--with-temp-file-generate-suffix "foo.el") "-foo"))
|
||||
(should (equal (ert--with-temp-file-generate-suffix "foo-test.el") "-foo"))
|
||||
(should (equal (ert--with-temp-file-generate-suffix "foo-tests.el") "-foo"))
|
||||
(should (equal (ert--with-temp-file-generate-suffix "foo-bar-baz.el")
|
||||
"-foo-bar-baz"))
|
||||
(should (equal (ert--with-temp-file-generate-suffix "/foo/bar/baz.el")
|
||||
"-baz")))
|
||||
|
||||
(ert-deftest ert-x-tests-with-temp-file ()
|
||||
(let (saved)
|
||||
(ert-with-temp-file fil
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue