]> code.delx.au - gnu-emacs/blobdiff - test/automated/bytecomp-tests.el
Use obarray functions from obarray.
[gnu-emacs] / test / automated / bytecomp-tests.el
index 1d96f1cdfcecaa7bef48c7bbdef1d8ebf767963a..c65009cb1b090cb7981f2e0e05a9c2f7f63d4000 100644 (file)
@@ -1,6 +1,6 @@
 ;;; bytecomp-testsuite.el
 
-;; Copyright (C) 2008-2014 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2015 Free Software Foundation, Inc.
 
 ;; Author:         Shigeru Fukaya <shigeru.fukaya@gmail.com>
 ;; Created:        November 2008
@@ -316,12 +316,12 @@ Subtests signal errors if something goes wrong."
            (with-temp-buffer
              (dolist (form forms)
                (print form (current-buffer)))
-             (write-region (point-min) (point-max) elfile))
+             (write-region (point-min) (point-max) elfile nil 'silent))
            (if compile
                (let ((byte-compile-dest-file-function
                       (lambda (e) elcfile)))
                  (byte-compile-file elfile t))
-             (load elfile)))
+             (load elfile nil 'nomessage)))
       (when elfile (delete-file elfile))
       (when elcfile (delete-file elcfile)))))
 (put 'test-byte-comp-compile-and-load 'lisp-indent-function 1)
@@ -360,6 +360,32 @@ Subtests signal errors if something goes wrong."
       (defun def () (m))))
   (should (equal (funcall 'def) 4)))
 
+(ert-deftest bytecomp-tests--warnings ()
+  (with-current-buffer (get-buffer-create "*Compile-Log*")
+    (let ((inhibit-read-only t)) (erase-buffer)))
+  (test-byte-comp-compile-and-load t
+    '(progn
+       (defun my-test0 ()
+         (my--test11 3)
+         (my--test12 3)
+         (my--test2 5))
+       (defmacro my--test11 (arg) (+ arg 1))
+       (eval-and-compile
+         (defmacro my--test12 (arg) (+ arg 1))
+         (defun my--test2 (arg) (+ arg 1)))))
+  (with-current-buffer (get-buffer-create "*Compile-Log*")
+    (goto-char (point-min))
+    ;; Should warn that mt--test1[12] are first used as functions.
+    ;; The second alternative is for when the file name is so long
+    ;; that pretty-printing starts the message on the next line.
+    (should (or (re-search-forward "my--test11:\n.*macro" nil t)
+                (re-search-forward "my--test11:\n.*:\n.*macro" nil t)))
+    (should (or (re-search-forward "my--test12:\n.*macro" nil t)
+                (re-search-forward "my--test12:\n.*:\n.*macro" nil t)))
+    (goto-char (point-min))
+    ;; Should not warn that mt--test2 is not known to be defined.
+    (should-not (re-search-forward "my--test2" nil t))))
+
 (ert-deftest test-eager-load-macro-expansion ()
   (test-byte-comp-compile-and-load nil
     '(progn (defmacro abc (arg) 1) (defun def () (abc 2))))