From aacafbe267306a2bb5d504ae408008d1ff7e9c8f Mon Sep 17 00:00:00 2001 From: Stephen Gildea Date: Tue, 5 Oct 2021 20:32:59 -0700 Subject: [PATCH] Refactor mh-utils-tests macro 'with-mh-test-env' * test/lisp/mh-e/mh-utils-tests.el (with-mh-test-env): Refactor to reduce the size of the expanded macro. (mh-test-utils-setup): New helper function. (mh-ensure-native-trampolines): Absorbed by mh-test-utils-setup. --- test/lisp/mh-e/mh-utils-tests.el | 36 +++++++++++++++++--------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/test/lisp/mh-e/mh-utils-tests.el b/test/lisp/mh-e/mh-utils-tests.el index f1282ab44a6..bf684dbbea8 100644 --- a/test/lisp/mh-e/mh-utils-tests.el +++ b/test/lisp/mh-e/mh-utils-tests.el @@ -95,26 +95,28 @@ install an MH variant and test it interactively." (mh-sub-folders-cache (make-hash-table :test #'equal)) ;; remember the original value (original-mh-envvar (getenv "MH"))) - (unless mh-test-variant-logged-already - (mh-variant-set mh-variant) - (setq mh-test-variant-logged-already t)) (unwind-protect (progn - (if mh-variant-in-use - (setq temp-home-dir (mh-test-utils-setup-with-variant)) - (mh-test-utils-setup-with-mocks)) + (setq temp-home-dir (mh-test-utils-setup)) ,@body) (if temp-home-dir (delete-directory temp-home-dir t)) (setenv "MH" original-mh-envvar)))) -(defun mh-ensure-native-trampolines () - "Build head of time the trampolines we'll need. -As `call-process'' and `file-directory-p' will be redefined, the -native compiler will invoke `call-process' to compile the -respective trampolines. To avoid interferences with the -`call-process' mocking we build these AOT." +(defun mh-test-utils-setup () + "Set dynamically bound variables needed by mock and/or variants. +Return the name of the root of the created directory tree, if any." + (unless mh-test-variant-logged-already + (mh-variant-set mh-variant) + (setq mh-test-variant-logged-already t)) + ;; As `call-process'' and `file-directory-p' will be redefined, the + ;; native compiler will invoke `call-process' to compile the + ;; respective trampolines. To avoid interference with the + ;; `call-process' mocking, we build these ahead of time. (when (native-comp-available-p) - (mapc #'comp-subr-trampoline-install '(call-process file-directory-p)))) + (mapc #'comp-subr-trampoline-install '(call-process file-directory-p))) + (if mh-variant-in-use + (mh-test-utils-setup-with-variant) + (mh-test-utils-setup-with-mocks))) (defun mh-test-utils-setup-with-mocks () "Set dynamically bound variables so that MH programs are mocked out. @@ -125,9 +127,10 @@ The tests use this method if no configured MH variant is found." (mh-populate-sub-folders-cache "+rela-folder/bar") (mh-populate-sub-folders-cache "+rela-folder/foo") (mh-populate-sub-folders-cache "+rela-folder/food") - (mh-ensure-native-trampolines) (fset 'call-process #'mh-test-utils-mock-call-process) - (fset 'file-directory-p #'mh-test-utils-mock-file-directory-p)) + (fset 'file-directory-p #'mh-test-utils-mock-file-directory-p) + ;; no temp directory created + nil) (defun mh-test-utils-mock-call-process (program &optional _infile _destination _display @@ -196,7 +199,7 @@ Return the name of the root of the created directory tree. Set dynamically bound variables so that MH programs may log. The tests use this method if a configured MH variant is found." (let* ((temp-home-dir - (make-temp-file "emacs-mh-e-unit-test" t)) + (make-temp-file "emacs-mh-e-unit-test-" t)) (profile (expand-file-name ".mh_profile" temp-home-dir)) (mail-dir (expand-file-name "Mail" temp-home-dir)) @@ -215,7 +218,6 @@ The tests use this method if a configured MH variant is found." (make-directory (expand-file-name "foo" abso-folder) t) (make-directory (expand-file-name "food" abso-folder) t) (setq mh-test-abs-folder abso-folder) - (mh-ensure-native-trampolines) (fset 'call-process #'mh-test-utils-log-call-process) (fset 'file-directory-p #'mh-test-utils-log-file-directory-p) temp-home-dir)) -- 2.39.5