[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master a126c36 1/2: Test byte-compiler free variable warning
From: |
Stefan Kangas |
Subject: |
master a126c36 1/2: Test byte-compiler free variable warning |
Date: |
Mon, 30 Nov 2020 17:07:21 -0500 (EST) |
branch: master
commit a126c3684f8854f8c0d7ab5dcf55f31bac77dcf9
Author: Stefan Kangas <stefan@marxist.se>
Commit: Stefan Kangas <stefan@marxist.se>
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.
---
test/lisp/emacs-lisp/bytecomp-resources/warn-free-setq.el | 2 ++
.../bytecomp-resources/warn-free-variable-reference.el | 4 ++++
test/lisp/emacs-lisp/bytecomp-tests.el | 14 ++++++++++++++
3 files changed, 20 insertions(+)
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
index 0000000..6e18712
--- /dev/null
+++ b/test/lisp/emacs-lisp/bytecomp-resources/warn-free-setq.el
@@ -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
index 0000000..50a9527
--- /dev/null
+++ b/test/lisp/emacs-lisp/bytecomp-resources/warn-free-variable-reference.el
@@ -0,0 +1,4 @@
+;;; -*- lexical-binding: t -*-
+(defvar xxx-test)
+(defun foo ()
+ (setq xxx-test bar))
diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el
b/test/lisp/emacs-lisp/bytecomp-tests.el
index 680aa51..c9070c0 100644
--- a/test/lisp/emacs-lisp/bytecomp-tests.el
+++ b/test/lisp/emacs-lisp/bytecomp-tests.el
@@ -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)