aboutsummaryrefslogtreecommitdiff
path: root/tests/test-ui-navigation-split-follow-undo-kill.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-15 21:52:30 -0500
committerCraig Jennings <c@cjennings.net>2026-06-15 21:52:30 -0500
commitea46c4a90c9f2de94cdb6ab4e47e744a9506ee37 (patch)
tree46bce18474facc12ba12a8808cf5373d1a9ea84d /tests/test-ui-navigation-split-follow-undo-kill.el
parenta7acefc5065558de2d301700c23d71f83bffdc83 (diff)
downloaddotemacs-ea46c4a90c9f2de94cdb6ab4e47e744a9506ee37.tar.gz
dotemacs-ea46c4a90c9f2de94cdb6ab4e47e744a9506ee37.zip
fix(ui-navigation): undo-kill-buffer skips open files via equal
The visited-file filter used delq, comparing expand-file-name strings by eq, so an already-open file was never removed from the candidates (the skip logic was dead). Use delete (equal). Adds a test with the open file at the head of the list, where the eq/equal difference actually shows.
Diffstat (limited to 'tests/test-ui-navigation-split-follow-undo-kill.el')
-rw-r--r--tests/test-ui-navigation-split-follow-undo-kill.el23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/test-ui-navigation-split-follow-undo-kill.el b/tests/test-ui-navigation-split-follow-undo-kill.el
index 8e3900743..f6981a36a 100644
--- a/tests/test-ui-navigation-split-follow-undo-kill.el
+++ b/tests/test-ui-navigation-split-follow-undo-kill.el
@@ -76,6 +76,29 @@ non-visited entry, not the second."
(when (get-buffer "*test-alive*") (kill-buffer "*test-alive*"))))
(should (equal opened "/tmp/dead.org"))))
+(ert-deftest test-ui-navigation-undo-kill-buffer-skips-open-file-at-head ()
+ "Boundary: an open file at the head of the list is skipped (equal, not eq).
+The previous delq compared expand-file-name strings by identity, so a
+currently-open most-recent file was never skipped."
+ (let ((opened nil)
+ (recentf-mode t)
+ ;; The open file is FIRST — only an equal-based filter removes it.
+ (recentf-list '("/tmp/alive.txt" "/tmp/dead.org")))
+ (cl-letf (((symbol-function 'require) (lambda (&rest _) t))
+ ((symbol-function 'recentf-mode) (lambda (&rest _) t))
+ ((symbol-function 'buffer-list)
+ (lambda (&rest _)
+ (list (let ((b (get-buffer-create "*test-alive*")))
+ (with-current-buffer b
+ (setq buffer-file-name "/tmp/alive.txt"))
+ b))))
+ ((symbol-function 'find-file)
+ (lambda (f) (setq opened f))))
+ (unwind-protect
+ (cj/undo-kill-buffer 1)
+ (when (get-buffer "*test-alive*") (kill-buffer "*test-alive*"))))
+ (should (equal opened "/tmp/dead.org"))))
+
(ert-deftest test-ui-navigation-undo-kill-buffer-numeric-arg-is-one-based ()
"Normal: a numeric prefix is 1-based — N=2 opens the second non-visited entry."
(let ((opened nil)