]> git.eshelyaron.com Git - emacs.git/commitdiff
Test byte-compiler free variable warning
authorStefan Kangas <stefan@marxist.se>
Mon, 30 Nov 2020 21:42:08 +0000 (22:42 +0100)
committerStefan Kangas <stefan@marxist.se>
Mon, 30 Nov 2020 21:43:37 +0000 (22:43 +0100)
* test/lisp/emacs-lisp/bytecomp-tests.el (ert-x): Require.
(bytecomp--define-warning-file-test): New macro.
(bytecomp-warn/warn-free-setq\.el)
(bytecomp-warn/warn-free-variable-reference\.el): New tests.
* test/lisp/emacs-lisp/bytecomp-resources/warn-free-setq.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-free-variable-reference.el:
New files.

test/lisp/emacs-lisp/bytecomp-resources/warn-free-setq.el [new file with mode: 0644]
test/lisp/emacs-lisp/bytecomp-resources/warn-free-variable-reference.el [new file with mode: 0644]
test/lisp/emacs-lisp/bytecomp-tests.el

diff --git a/test/lisp/emacs-lisp/bytecomp-resources/warn-free-setq.el b/test/lisp/emacs-lisp/bytecomp-resources/warn-free-setq.el
new file mode 100644 (file)
index 0000000..6e18712
--- /dev/null
@@ -0,0 +1,2 @@
+;;; -*- lexical-binding: t -*-
+(setq foo 'bar)
diff --git a/test/lisp/emacs-lisp/bytecomp-resources/warn-free-variable-reference.el b/test/lisp/emacs-lisp/bytecomp-resources/warn-free-variable-reference.el
new file mode 100644 (file)
index 0000000..50a9527
--- /dev/null
@@ -0,0 +1,4 @@
+;;; -*- lexical-binding: t -*-
+(defvar xxx-test)
+(defun foo ()
+  (setq xxx-test bar))
index 680aa514a2700310c99fcf9b3f0a73103f38bc05..c9070c03b3fdde308f6fe0e8268b0d5b9706c18c 100644 (file)
@@ -26,6 +26,7 @@
 ;;; Commentary:
 
 (require 'ert)
+(require 'ert-x)
 (require 'cl-lib)
 (require 'subr-x)
 (require 'bytecomp)
@@ -546,6 +547,19 @@ Subtests signal errors if something goes wrong."
     '(eval-and-compile (defmacro abc (arg) -1) (defun def () (abc 2))))
   (should (equal (funcall 'def) -1)))
 
+(defmacro bytecomp--define-warning-file-test (file re-warning &optional reverse)
+  `(ert-deftest ,(intern (format "bytecomp-warn/%s" file)) ()
+     :expected-result ,(if reverse :failed :passed)
+     (with-current-buffer (get-buffer-create "*Compile-Log*")
+       (let ((inhibit-read-only t)) (erase-buffer))
+       (byte-compile-file ,(ert-resource-file file))
+       (ert-info ((buffer-string) :prefix "buffer: ")
+         (should (re-search-forward ,re-warning))))))
+
+(bytecomp--define-warning-file-test "warn-free-setq.el" "free.*foo")
+
+(bytecomp--define-warning-file-test "warn-free-variable-reference.el" "free.*bar")
+
 (ert-deftest test-eager-load-macro-expansion-eval-when-compile ()
   ;; Make sure we interpret eval-when-compile forms properly.  CLISP
   ;; and SBCL interpreter eval-when-compile (well, the CL equivalent)