Replace some macros with ert-with-temp-(file|directory)

* test/lisp/custom-tests.el (custom-tests--with-temp-dir):
* test/lisp/files-tests.el (files-tests--with-temp-file):
* test/lisp/progmodes/project-tests.el
(project-tests--with-temporary-directory):
* test/src/emacs-module-tests.el (module--with-temp-directory):
* test/src/emacs-tests.el (emacs-tests--with-temp-file):
* test/src/lread-tests.el (lread-tests--with-temp-file):
* test/src/process-tests.el (process-tests--with-temp-directory):
Replace macros with 'ert-with-temp-(file|directory)'.  Update callers.
This commit is contained in:
Stefan Kangas 2021-11-06 16:05:02 +01:00
parent bf2e35c5d2
commit 83422370c8
7 changed files with 22 additions and 100 deletions

View file

@ -25,20 +25,9 @@
(require 'wid-edit)
(require 'cus-edit)
(defmacro custom-tests--with-temp-dir (&rest body)
"Eval BODY with `temporary-file-directory' bound to a fresh directory.
Ensure the directory is recursively deleted after the fact."
(declare (debug t) (indent 0))
(let ((dir (make-symbol "dir")))
`(let ((,dir (file-name-as-directory (make-temp-file "custom-tests-" t))))
(unwind-protect
(let ((temporary-file-directory ,dir))
,@body)
(delete-directory ,dir t)))))
(ert-deftest custom-theme--load-path ()
"Test `custom-theme--load-path' behavior."
(custom-tests--with-temp-dir
(ert-with-temp-directory temporary-file-directory
;; Path is empty.
(let ((custom-theme-load-path ()))
(should (null (custom-theme--load-path))))
@ -97,7 +86,7 @@ Ensure the directory is recursively deleted after the fact."
(ert-deftest custom-tests-require-theme ()
"Test `require-theme'."
(require 'warnings)
(custom-tests--with-temp-dir
(ert-with-temp-directory temporary-file-directory
(let* ((default-directory temporary-file-directory)
(custom-theme-load-path (list default-directory))
(load-path ()))

View file

@ -341,14 +341,6 @@ be $HOME."
(progn ,@body)
(advice-remove #',symbol ,function)))))
(defmacro files-tests--with-temp-file (name &rest body)
(declare (indent 1) (debug (symbolp body)))
(cl-check-type name symbol)
`(let ((,name (make-temp-file "emacs")))
(unwind-protect
(progn ,@body)
(delete-file ,name))))
(ert-deftest files-tests-file-name-non-special--buffers ()
"Check that Bug#25951 is fixed.
We call `verify-visited-file-modtime' on a buffer visiting a file
@ -357,7 +349,7 @@ the buffer current and a nil argument, second passing the buffer
object explicitly. In both cases no error should be raised and
the `file-name-non-special' handler for quoted file names should
be invoked with the right arguments."
(files-tests--with-temp-file temp-file-name
(ert-with-temp-file temp-file-name
(with-temp-buffer
(let* ((buffer-visiting-file (current-buffer))
(actual-args ())
@ -1318,7 +1310,7 @@ name (Bug#28412)."
(set-buffer-modified-p t)
(should-error (save-buffer) :type 'error))
;; Then a buffer visiting a file: should save normally.
(files-tests--with-temp-file temp-file-name
(ert-with-temp-file temp-file-name
(with-current-buffer (find-file-noselect temp-file-name)
(setq write-contents-functions nil)
(insert "p")
@ -1509,7 +1501,7 @@ The door of all subtleties!
(ert-deftest files-tests-revert-buffer ()
"Test that revert-buffer is successful."
(files-tests--with-temp-file temp-file-name
(ert-with-temp-file temp-file-name
(with-temp-buffer
(insert files-tests-lao)
(write-file temp-file-name)
@ -1522,7 +1514,7 @@ The door of all subtleties!
(ert-deftest files-tests-revert-buffer-with-fine-grain ()
"Test that revert-buffer-with-fine-grain is successful."
(files-tests--with-temp-file temp-file-name
(ert-with-temp-file temp-file-name
(with-temp-buffer
(insert files-tests-lao)
(write-file temp-file-name)

View file

@ -29,29 +29,17 @@
(require 'cl-lib)
(require 'ert)
(require 'ert-x) ; ert-with-temp-directory
(require 'grep)
(require 'xref)
(defmacro project-tests--with-temporary-directory (var &rest body)
"Create a new temporary directory.
Bind VAR to the name of the directory, and evaluate BODY. Delete
the directory after BODY exits."
(declare (debug (symbolp body)) (indent 1))
(cl-check-type var symbol)
(let ((directory (make-symbol "directory")))
`(let ((,directory (make-temp-file "project-tests-" :directory)))
(unwind-protect
(let ((,var ,directory))
,@body)
(delete-directory ,directory :recursive)))))
(ert-deftest project/quoted-directory ()
"Check that `project-files' and `project-find-regexp' deal with
quoted directory names (Bug#47799)."
(skip-unless (executable-find find-program))
(skip-unless (executable-find "xargs"))
(skip-unless (executable-find "grep"))
(project-tests--with-temporary-directory directory
(ert-with-temp-directory directory
(let ((default-directory directory)
(project-current-inhibit-prompt t)
(project-find-functions nil)
@ -95,7 +83,7 @@ quoted directory names (Bug#47799)."
returned by `project-ignores' if the root directory is a
directory name (Bug#48471)."
(skip-unless (executable-find find-program))
(project-tests--with-temporary-directory dir
(ert-with-temp-directory dir
(make-empty-file (expand-file-name "some-file" dir))
(make-empty-file (expand-file-name "ignored-file" dir))
(let* ((project (make-project-tests--trivial
@ -111,7 +99,7 @@ directory name (Bug#48471)."
"Check that `project-files' does not ignore all files.
When `project-ignores' includes a name matching project dir."
(skip-unless (executable-find find-program))
(project-tests--with-temporary-directory dir
(ert-with-temp-directory dir
(make-empty-file (expand-file-name "some-file" dir))
(let* ((project (make-project-tests--trivial
:root (file-name-as-directory dir)

View file

@ -211,20 +211,6 @@ changes."
(should (equal (help-function-arglist #'mod-test-sum)
'(arg1 arg2))))
(defmacro module--with-temp-directory (name &rest body)
"Bind NAME to the name of a temporary directory and evaluate BODY.
NAME must be a symbol. Delete the temporary directory after BODY
exits normally or non-locally. NAME will be bound to the
directory name (not the directory file name) of the temporary
directory."
(declare (indent 1))
(cl-check-type name symbol)
`(let ((,name (file-name-as-directory
(make-temp-file "emacs-module-test" :directory))))
(unwind-protect
(progn ,@body)
(delete-directory ,name :recursive))))
(defmacro module--test-assertion (pattern &rest body)
"Test that PATTERN matches the assertion triggered by BODY.
Run Emacs as a subprocess, load the test module `mod-test-file',
@ -233,7 +219,7 @@ assertion message that matches PATTERN. PATTERN is evaluated and
must evaluate to a regular expression string."
(declare (indent 1))
;; To contain any core dumps.
`(module--with-temp-directory tempdir
`(ert-with-temp-directory tempdir
(with-temp-buffer
(let* ((default-directory tempdir)
(status (call-process mod-test-emacs nil t nil

View file

@ -25,6 +25,7 @@
(require 'cl-lib)
(require 'ert)
(require 'ert-x) ; ert-with-temp-file
(require 'rx)
(require 'subr-x)
@ -46,22 +47,6 @@
"--seccomp=/does-not-exist.bpf")
0))))
(cl-defmacro emacs-tests--with-temp-file
(var (prefix &optional suffix text) &rest body)
"Evaluate BODY while a new temporary file exists.
Bind VAR to the name of the file. Pass PREFIX, SUFFIX, and TEXT
to `make-temp-file', which see."
(declare (indent 2) (debug (symbolp (form form form) body)))
(cl-check-type var symbol)
;; Use an uninterned symbol so that the code still works if BODY
;; changes VAR.
(let ((filename (make-symbol "filename")))
`(let ((,filename (make-temp-file ,prefix nil ,suffix ,text)))
(unwind-protect
(let ((,var ,filename))
,@body)
(delete-file ,filename)))))
(ert-deftest emacs-tests/seccomp/empty-file ()
(skip-unless (string-match-p (rx bow "SECCOMP" eow)
system-configuration-features))
@ -69,7 +54,8 @@ to `make-temp-file', which see."
(expand-file-name invocation-name invocation-directory))
(process-environment nil))
(skip-unless (file-executable-p emacs))
(emacs-tests--with-temp-file filter ("seccomp-invalid-" ".bpf")
(ert-with-temp-file filter
:prefix "seccomp-invalid-" :suffix ".bpf"
;; The --seccomp option is processed early, without filename
;; handlers. Therefore remote or quoted filenames wouldn't
;; work.
@ -94,9 +80,9 @@ to `make-temp-file', which see."
;; Either 8 or 16, but 16 should be large enough in all cases.
(filter-size 16))
(skip-unless (file-executable-p emacs))
(emacs-tests--with-temp-file
filter ("seccomp-too-large-" ".bpf"
(make-string (* (1+ ushort-max) filter-size) ?a))
(ert-with-temp-file filter
:prefix "seccomp-too-large-" :suffix ".bpf"
:text (make-string (* (1+ ushort-max) filter-size) ?a)
;; The --seccomp option is processed early, without filename
;; handlers. Therefore remote or quoted filenames wouldn't
;; work.
@ -117,8 +103,8 @@ to `make-temp-file', which see."
(expand-file-name invocation-name invocation-directory))
(process-environment nil))
(skip-unless (file-executable-p emacs))
(emacs-tests--with-temp-file filter ("seccomp-invalid-" ".bpf"
"123456")
(ert-with-temp-file filter
:prefix "seccomp-invalid-" :suffix ".bpf" :text "123456"
;; The --seccomp option is processed early, without filename
;; handlers. Therefore remote or quoted filenames wouldn't
;; work.

View file

@ -119,14 +119,6 @@
(should (equal '(#s(foo) #s(foo))
(read "(#1=#s(foo) #1#)"))))
(defmacro lread-tests--with-temp-file (file-name-var &rest body)
(declare (indent 1))
(cl-check-type file-name-var symbol)
`(let ((,file-name-var (make-temp-file "emacs")))
(unwind-protect
(progn ,@body)
(delete-file ,file-name-var))))
(defun lread-tests--last-message ()
(with-current-buffer "*Messages*"
(save-excursion
@ -137,7 +129,7 @@
(ert-deftest lread-tests--unescaped-char-literals ()
"Check that loading warns about unescaped character
literals (Bug#20852)."
(lread-tests--with-temp-file file-name
(ert-with-temp-file file-name
(write-region "?) ?( ?; ?\" ?[ ?]" nil file-name)
(should (equal (load file-name nil :nomessage :nosuffix) t))
(should (equal (lread-tests--last-message)

View file

@ -25,6 +25,7 @@
(require 'cl-lib)
(require 'ert)
(require 'ert-x) ; ert-with-temp-directory
(require 'puny)
(require 'subr-x)
(require 'dns)
@ -531,18 +532,6 @@ FD_SETSIZE."
(delete-process (pop ,processes))
,@body)))))
(defmacro process-tests--with-temp-directory (var &rest body)
"Bind VAR to the name of a new directory and evaluate BODY.
Afterwards, delete the directory."
(declare (indent 1) (debug (symbolp body)))
(cl-check-type var symbol)
(let ((dir (make-symbol "dir")))
`(let ((,dir (make-temp-file "emacs-test-" :dir)))
(unwind-protect
(let ((,var ,dir))
,@body)
(delete-directory ,dir :recursive)))))
;; Tests for FD_SETSIZE overflow (Bug#24325). The following tests
;; generate lots of process objects of the various kinds. Running the
;; tests with assertions enabled should not result in any crashes due
@ -630,7 +619,7 @@ FD_SETSIZE file descriptors (Bug#24325)."
;; Avoid hang due to connect/accept handshake on Cygwin (bug#49496).
(skip-unless (not (eq system-type 'cygwin)))
(with-timeout (60 (ert-fail "Test timed out"))
(process-tests--with-temp-directory directory
(ert-with-temp-directory directory
(process-tests--with-processes processes
(let* ((num-clients 10)
(socket-name (expand-file-name "socket" directory))