From: Andrea Corallo Date: Sat, 16 Nov 2019 08:58:05 +0000 (+0100) Subject: add comp-tests-bootstrap X-Git-Tag: emacs-28.0.90~2727^2~992 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b91cbf80aeb4487ad3e1fa0e64e3cb5549ec663c;p=emacs.git add comp-tests-bootstrap --- diff --git a/test/src/comp-tests.el b/test/src/comp-tests.el index 2e388b9f148..1f43a91d49c 100644 --- a/test/src/comp-tests.el +++ b/test/src/comp-tests.el @@ -32,13 +32,37 @@ (setq comp-speed 3) (setq comp-debug 1) +(defconst comp-test-directory (file-name-directory (or load-file-name + buffer-file-name))) (defconst comp-test-src - (concat (file-name-directory (or load-file-name buffer-file-name)) - "comp-test-funcs.el")) + (concat comp-test-directory "comp-test-funcs.el")) (message "Compiling %s" comp-test-src) (load (native-compile comp-test-src)) +(ert-deftest comp-tests-bootstrap () + "Compile the compiler and load it to compile it-self. +Check that the resulting binaries do not differ." + (let ((comp-file (concat comp-test-directory + "../../lisp/emacs-lisp/comp.el")) + (comp1-file (concat temporary-file-directory + (make-temp-name "stage1-") + ".el")) + (comp2-file (concat temporary-file-directory + (make-temp-name "stage2-") + ".el"))) + (copy-file comp-file comp1-file) + (copy-file comp-file comp2-file) + (load (concat comp-file "c") nil nil t t) + (should (null (subr-native-elisp-p (symbol-function #'native-compile)))) + (message "Compiling stage1...") + (load (native-compile comp1-file) nil nil t t) + (should (subr-native-elisp-p (symbol-function 'native-compile))) + (message "Compiling stage2...") + (native-compile comp2-file) + (message "Comparing %s %s" comp1-file comp2-file) + (should (= (call-process "cmp" nil nil nil comp1-file comp2-file) 0)))) + (ert-deftest comp-tests-provide () "Testing top level provide." (should (featurep 'comp-test-funcs)))