From d527bc4b7d2f69d8b3ae76be78fb9610419bd800 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 24 Feb 2021 18:12:18 -0500 Subject: * test/lisp/emacs-lisp/macroexp-tests.el (macroexp--tests-file-name): New test * test/lisp/emacs-lisp/macroexp-resources/m1.el: * test/lisp/emacs-lisp/macroexp-resources/m2.el: New files. --- test/lisp/emacs-lisp/macroexp-tests.el | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'test/lisp/emacs-lisp/macroexp-tests.el') diff --git a/test/lisp/emacs-lisp/macroexp-tests.el b/test/lisp/emacs-lisp/macroexp-tests.el index 1124e3b8d91..0b26f109b9e 100644 --- a/test/lisp/emacs-lisp/macroexp-tests.el +++ b/test/lisp/emacs-lisp/macroexp-tests.el @@ -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 ;; Keywords: @@ -32,5 +32,36 @@ (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 -- cgit v1.2.3 From 8114a84b21b2463ea35db7f3a18fd3804396f47e Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 24 Feb 2021 18:39:06 -0500 Subject: * test/lisp/emacs-lisp/macroexp-tests.el (macroexp--tests-file-name): Add case Add use of `macroexp-file-name` from a macro called from within a function, which works thanks to eager-macroexpansion (so the macro is expanded which the file is being loaded rather than only later when the function is called). * test/lisp/emacs-lisp/macroexp-resources/m1.el (macroexp--m1-tests-file-name): New function. --- test/lisp/emacs-lisp/macroexp-resources/m1.el | 3 +++ test/lisp/emacs-lisp/macroexp-tests.el | 5 +++++ 2 files changed, 8 insertions(+) (limited to '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 index a2fe6ecf2ed..96b5f7091af 100644 --- a/test/lisp/emacs-lisp/macroexp-resources/m1.el +++ b/test/lisp/emacs-lisp/macroexp-resources/m1.el @@ -29,5 +29,8 @@ (eval-when-compile (defconst macroexp--m1-tests-comp-filename (macroexp-file-name))) +(defun macroexp--m1-tests-file-name () + (macroexp--test-get-file-name)) + (provide 'm1) ;;; m1.el ends here diff --git a/test/lisp/emacs-lisp/macroexp-tests.el b/test/lisp/emacs-lisp/macroexp-tests.el index 0b26f109b9e..89d3882d1da 100644 --- a/test/lisp/emacs-lisp/macroexp-tests.el +++ b/test/lisp/emacs-lisp/macroexp-tests.el @@ -34,6 +34,8 @@ (defconst macroexp--tests-filename (macroexp-file-name)) +(defmacro macroexp--test-get-file-name () (macroexp-file-name)) + (ert-deftest macroexp--tests-file-name () (should (string-match "\\`macroexp-tests.elc?\\'" @@ -44,10 +46,13 @@ (with-current-buffer (find-file-noselect (expand-file-name "m1.el" rsrc-dir)) (defvar macroexp--m1-tests-filename) + (declare-function macroexp--m1-tests-file-name "m1" ()) ;; `macroexp-file-name' should work with `eval-buffer'. (eval-buffer) (should (equal "m1.el" (file-name-nondirectory macroexp--m1-tests-filename))) + (should (equal "m1.el" + (file-name-nondirectory (macroexp--m1-tests-file-name)))) (search-forward "macroexp--m1-tests-filename") (makunbound 'macroexp--m1-tests-filename) ;; `macroexp-file-name' should also work with `eval-defun'. -- cgit v1.2.3