]> git.eshelyaron.com Git - emacs.git/commitdiff
add comp-tests-bootstrap
authorAndrea Corallo <akrl@sdf.org>
Sat, 16 Nov 2019 08:58:05 +0000 (09:58 +0100)
committerAndrea Corallo <akrl@sdf.org>
Wed, 1 Jan 2020 10:38:05 +0000 (11:38 +0100)
test/src/comp-tests.el

index 2e388b9f1486cfa5768982876c8c3cb9e75fd2ea..1f43a91d49c38661414ba34dda9754ad89406ee2 100644 (file)
 (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)))