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:
parent
bf2e35c5d2
commit
83422370c8
7 changed files with 22 additions and 100 deletions
|
@ -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 ()))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))
|
||||
|
|
Loading…
Add table
Reference in a new issue