Test byte-compiler free variable warning

* 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.
This commit is contained in:
Stefan Kangas 2020-11-30 22:42:08 +01:00
parent 713bac483b
commit a126c3684f
3 changed files with 20 additions and 0 deletions

View file

@ -0,0 +1,2 @@
;;; -*- lexical-binding: t -*-
(setq foo 'bar)

View file

@ -0,0 +1,4 @@
;;; -*- lexical-binding: t -*-
(defvar xxx-test)
(defun foo ()
(setq xxx-test bar))

View 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)