mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-06-14 12:31:25 +00:00
Make the nativecomp test eln directory more reliably be removed
* lisp/startup.el (startup-redirect-eln-cache, normal-top-level): Don't create the nativecomp directory here, because this led to brittle deletions of the directory -- there would be several instances of the directory left over after a test run. * lisp/emacs-lisp/ert.el (ert-run-tests-batch-and-exit): Create the nativecomp directory.
This commit is contained in:
parent
533500522d
commit
388e0c18f4
3 changed files with 33 additions and 43 deletions
|
|
@ -1533,23 +1533,33 @@ Returns the stats object."
|
|||
"Like `ert-run-tests-batch', but exits Emacs when done.
|
||||
|
||||
The exit status will be 0 if all test results were as expected, 1
|
||||
on unexpected results, or 2 if the tool detected an error outside
|
||||
son unexpected results, or 2 if the tool detected an error outside
|
||||
of the tests (e.g. invalid SELECTOR or bug in the code that runs
|
||||
the tests)."
|
||||
(or noninteractive
|
||||
(user-error "This function is only for use in batch mode"))
|
||||
;; Better crash loudly than attempting to recover from undefined
|
||||
;; behavior.
|
||||
(setq attempt-stack-overflow-recovery nil
|
||||
attempt-orderly-shutdown-on-fatal-signal nil)
|
||||
(unwind-protect
|
||||
(let ((stats (ert-run-tests-batch selector)))
|
||||
(kill-emacs (if (zerop (ert-stats-completed-unexpected stats)) 0 1)))
|
||||
(let ((eln-dir (and (featurep 'native-compile)
|
||||
(make-temp-file "test-nativecomp-cache-" t))))
|
||||
(when eln-dir
|
||||
(startup-redirect-eln-cache eln-dir))
|
||||
;; Better crash loudly than attempting to recover from undefined
|
||||
;; behavior.
|
||||
(setq attempt-stack-overflow-recovery nil
|
||||
attempt-orderly-shutdown-on-fatal-signal nil)
|
||||
(unwind-protect
|
||||
(progn
|
||||
(message "Error running tests")
|
||||
(backtrace))
|
||||
(kill-emacs 2))))
|
||||
(let ((stats (ert-run-tests-batch selector)))
|
||||
(when eln-dir
|
||||
(ignore-errors
|
||||
(delete-directory eln-dir t)))
|
||||
(kill-emacs (if (zerop (ert-stats-completed-unexpected stats)) 0 1)))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(message "Error running tests")
|
||||
(backtrace))
|
||||
(when eln-dir
|
||||
(ignore-errors
|
||||
(delete-directory eln-dir t)))
|
||||
(kill-emacs 2)))))
|
||||
|
||||
(defvar ert-load-file-name nil
|
||||
"The name of the loaded ERT test file, a string.
|
||||
|
|
|
|||
|
|
@ -557,25 +557,12 @@ to `user-emacs-directory'.
|
|||
For best results, call this function in your early-init file,
|
||||
so that the rest of initialization and package loading uses
|
||||
the updated value."
|
||||
(let ((tmp-dir (and (equal (getenv "HOME") "/nonexistent")
|
||||
(file-writable-p (expand-file-name
|
||||
(or temporary-file-directory "")))
|
||||
(car native-comp-eln-load-path))))
|
||||
(if tmp-dir
|
||||
(setq native-comp-eln-load-path
|
||||
(cdr native-comp-eln-load-path)))
|
||||
;; Remove the original eln-cache.
|
||||
(setq native-comp-eln-load-path
|
||||
(cdr native-comp-eln-load-path))
|
||||
;; Add the new eln-cache.
|
||||
(push (expand-file-name (file-name-as-directory cache-directory)
|
||||
user-emacs-directory)
|
||||
native-comp-eln-load-path)
|
||||
(when tmp-dir
|
||||
;; Recompute tmp-dir, in case user-emacs-directory affects it.
|
||||
(setq tmp-dir (make-temp-file "emacs-testsuite-" t))
|
||||
(add-hook 'kill-emacs-hook (lambda () (delete-directory tmp-dir t)))
|
||||
(push tmp-dir native-comp-eln-load-path))))
|
||||
;; Remove the original eln-cache.
|
||||
(setq native-comp-eln-load-path (cdr native-comp-eln-load-path))
|
||||
;; Add the new eln-cache.
|
||||
(push (expand-file-name (file-name-as-directory cache-directory)
|
||||
user-emacs-directory)
|
||||
native-comp-eln-load-path))
|
||||
|
||||
(defun startup--update-eln-cache ()
|
||||
"Update the user eln-cache directory due to user customizations."
|
||||
|
|
@ -619,18 +606,7 @@ It is the default value of the variable `top-level'."
|
|||
(unless (string= "" path)
|
||||
(push path native-comp-eln-load-path)))))
|
||||
(push (expand-file-name "eln-cache/" user-emacs-directory)
|
||||
native-comp-eln-load-path)
|
||||
;; When $HOME is set to '/nonexistent' means we are running the
|
||||
;; testsuite, add a temporary folder in front to produce there
|
||||
;; new compilations.
|
||||
(when (and (equal (getenv "HOME") "/nonexistent")
|
||||
;; We may be running in a chroot environment where we
|
||||
;; can't write anything.
|
||||
(file-writable-p (expand-file-name
|
||||
(or temporary-file-directory ""))))
|
||||
(let ((tmp-dir (make-temp-file "emacs-testsuite-" t)))
|
||||
(add-hook 'kill-emacs-hook (lambda () (delete-directory tmp-dir t)))
|
||||
(push tmp-dir native-comp-eln-load-path))))
|
||||
native-comp-eln-load-path))
|
||||
|
||||
;; Look in each dir in load-path for a subdirs.el file. If we
|
||||
;; find one, load it, which will add the appropriate subdirs of
|
||||
|
|
|
|||
|
|
@ -2961,6 +2961,10 @@ shut_down_emacs (int sig, Lisp_Object stuff)
|
|||
check_message_stack ();
|
||||
}
|
||||
|
||||
#ifdef HAVE_NATIVE_COMP
|
||||
eln_load_path_final_clean_up ();
|
||||
#endif
|
||||
|
||||
#ifdef MSDOS
|
||||
dos_cleanup ();
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue