]> git.eshelyaron.com Git - emacs.git/commitdiff
* test/lisp/emacs-lisp/macroexp-tests.el (macroexp--tests-file-name): New test
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 24 Feb 2021 23:12:18 +0000 (18:12 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 24 Feb 2021 23:12:18 +0000 (18:12 -0500)
* test/lisp/emacs-lisp/macroexp-resources/m1.el:
* test/lisp/emacs-lisp/macroexp-resources/m2.el: New files.

test/lisp/emacs-lisp/macroexp-resources/m1.el [new file with mode: 0644]
test/lisp/emacs-lisp/macroexp-resources/m2.el [new file with mode: 0644]
test/lisp/emacs-lisp/macroexp-tests.el

diff --git a/test/lisp/emacs-lisp/macroexp-resources/m1.el b/test/lisp/emacs-lisp/macroexp-resources/m1.el
new file mode 100644 (file)
index 0000000..a2fe6ec
--- /dev/null
@@ -0,0 +1,33 @@
+;;; m1.el --- Some sample code for macroexp-tests    -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2021  Free Software Foundation, Inc.
+
+;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
+;; Keywords:
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(defconst macroexp--m1-tests-filename (macroexp-file-name))
+
+(eval-when-compile
+  (defconst macroexp--m1-tests-comp-filename (macroexp-file-name)))
+
+(provide 'm1)
+;;; m1.el ends here
diff --git a/test/lisp/emacs-lisp/macroexp-resources/m2.el b/test/lisp/emacs-lisp/macroexp-resources/m2.el
new file mode 100644 (file)
index 0000000..4f2b96d
--- /dev/null
@@ -0,0 +1,33 @@
+;;; m2.el --- More sample code for macroexp-tests    -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2021  Free Software Foundation, Inc.
+
+;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
+;; Keywords:
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(defconst macroexp--m2-tests-filename (macroexp-file-name))
+
+(byte-compile-file (expand-file-name
+                    "m1.el" (file-name-directory macroexp--m2-tests-filename)))
+
+(provide 'm2)
+;;; m2.el ends here
index 1124e3b8d91884f81bdaf5a087cca86c5b134d36..0b26f109b9e198e327bf53d16a02fd1214d5e806 100644 (file)
@@ -1,6 +1,6 @@
 ;;; macroexp-tests.el --- Tests for macroexp.el      -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2021  Stefan Monnier
+;; Copyright (C) 2021  Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
 ;; Keywords:
   (should (equal (macroexp--fgrep '((x) (y)) '#2=([r] ((a x)) a b c d . #2#))
                  '((x)))))
 
+(defconst macroexp--tests-filename (macroexp-file-name))
+
+(ert-deftest macroexp--tests-file-name ()
+  (should (string-match
+           "\\`macroexp-tests.elc?\\'"
+           (file-name-nondirectory macroexp--tests-filename)))
+  (let ((rsrc-dir (expand-file-name
+                   "macroexp-resources"
+                   (file-name-directory macroexp--tests-filename))))
+    (with-current-buffer
+        (find-file-noselect (expand-file-name "m1.el" rsrc-dir))
+      (defvar macroexp--m1-tests-filename)
+      ;; `macroexp-file-name' should work with `eval-buffer'.
+      (eval-buffer)
+      (should (equal "m1.el"
+                     (file-name-nondirectory macroexp--m1-tests-filename)))
+      (search-forward "macroexp--m1-tests-filename")
+      (makunbound 'macroexp--m1-tests-filename)
+      ;; `macroexp-file-name' should also work with `eval-defun'.
+      (eval-defun nil)
+      (should (equal "m1.el"
+                     (file-name-nondirectory macroexp--m1-tests-filename))))
+
+    ;; Test the case where we load a file which byte-compiles another.
+    (defvar macroexp--m1-tests-comp-filename)
+    (makunbound 'macroexp--m1-tests-comp-filename)
+    (load (expand-file-name "m2.el" rsrc-dir))
+    (should (equal "m1.el"
+                   (file-name-nondirectory macroexp--m1-tests-comp-filename)))))
+
+
 (provide 'macroexp-tests)
 ;;; macroexp-tests.el ends here