* Fix mh tests for native comp builds (bug#50975)

* test/lisp/mh-e/mh-utils-tests.el (mh-ensure-native-trampolines):
New function.
(mh-test-utils-setup-with-mocks)
(mh-test-utils-setup-with-variant): Use it.
This commit is contained in:
Andrea Corallo 2021-10-04 22:47:30 +02:00
parent e606cc6f40
commit 63cb65dcce

View file

@ -107,6 +107,15 @@ install an MH variant and test it interactively."
(if temp-home-dir (delete-directory temp-home-dir t)) (if temp-home-dir (delete-directory temp-home-dir t))
(setenv "MH" original-mh-envvar)))) (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."
(when (featurep 'native-compile)
(mapc #'comp-subr-trampoline-install '(call-process file-directory-p))))
(defun mh-test-utils-setup-with-mocks () (defun mh-test-utils-setup-with-mocks ()
"Set dynamically bound variables so that MH programs are mocked out. "Set dynamically bound variables so that MH programs are mocked out.
The tests use this method if no configured MH variant is found." The tests use this method if no configured MH variant is found."
@ -116,6 +125,7 @@ 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/bar")
(mh-populate-sub-folders-cache "+rela-folder/foo") (mh-populate-sub-folders-cache "+rela-folder/foo")
(mh-populate-sub-folders-cache "+rela-folder/food") (mh-populate-sub-folders-cache "+rela-folder/food")
(mh-ensure-native-trampolines)
(fset 'call-process #'mh-test-utils-mock-call-process) (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))
@ -205,6 +215,7 @@ 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 "foo" abso-folder) t)
(make-directory (expand-file-name "food" abso-folder) t) (make-directory (expand-file-name "food" abso-folder) t)
(setq mh-test-abs-folder abso-folder) (setq mh-test-abs-folder abso-folder)
(mh-ensure-native-trampolines)
(fset 'call-process #'mh-test-utils-log-call-process) (fset 'call-process #'mh-test-utils-log-call-process)
(fset 'file-directory-p #'mh-test-utils-log-file-directory-p) (fset 'file-directory-p #'mh-test-utils-log-file-directory-p)
temp-home-dir)) temp-home-dir))