summaryrefslogtreecommitdiff
path: root/tests/test-undead-buffers-kill-all-other-buffers-and-windows.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-undead-buffers-kill-all-other-buffers-and-windows.el')
-rw-r--r--tests/test-undead-buffers-kill-all-other-buffers-and-windows.el159
1 files changed, 159 insertions, 0 deletions
diff --git a/tests/test-undead-buffers-kill-all-other-buffers-and-windows.el b/tests/test-undead-buffers-kill-all-other-buffers-and-windows.el
new file mode 100644
index 00000000..dcd08e96
--- /dev/null
+++ b/tests/test-undead-buffers-kill-all-other-buffers-and-windows.el
@@ -0,0 +1,159 @@
+;;; test-undead-buffers-kill-all-other-buffers-and-windows.el --- Tests for cj/kill-all-other-buffers-and-windows -*- lexical-binding: t; -*-
+
+;;; Commentary:
+;; Tests for the cj/kill-all-other-buffers-and-windows function from undead-buffers.el
+
+;;; Code:
+
+(require 'ert)
+(require 'undead-buffers)
+(require 'testutil-general)
+
+;;; Setup and Teardown
+
+(defun test-kill-all-other-buffers-and-windows-setup ()
+ "Setup for kill-all-other-buffers-and-windows tests."
+ (cj/create-test-base-dir)
+ (delete-other-windows))
+
+(defun test-kill-all-other-buffers-and-windows-teardown ()
+ "Teardown for kill-all-other-buffers-and-windows tests."
+ (delete-other-windows)
+ (cj/delete-test-base-dir))
+
+;;; Normal Cases
+
+(ert-deftest test-kill-all-other-buffers-and-windows-should-kill-regular-buffers ()
+ "Should kill all regular buffers except current."
+ (test-kill-all-other-buffers-and-windows-setup)
+ (unwind-protect
+ (let ((main (current-buffer))
+ (buf1 (generate-new-buffer "*test-regular-1*"))
+ (buf2 (generate-new-buffer "*test-regular-2*")))
+ (unwind-protect
+ (progn
+ (should (buffer-live-p buf1))
+ (should (buffer-live-p buf2))
+ (cj/kill-all-other-buffers-and-windows)
+ (should (buffer-live-p main))
+ (should-not (buffer-live-p buf1))
+ (should-not (buffer-live-p buf2)))
+ (when (buffer-live-p buf1) (kill-buffer buf1))
+ (when (buffer-live-p buf2) (kill-buffer buf2))))
+ (test-kill-all-other-buffers-and-windows-teardown)))
+
+(ert-deftest test-kill-all-other-buffers-and-windows-should-bury-undead-buffers ()
+ "Should bury undead buffers instead of killing them."
+ (test-kill-all-other-buffers-and-windows-setup)
+ (unwind-protect
+ (let ((orig (copy-sequence cj/undead-buffer-list))
+ (main (current-buffer))
+ (buf1 (generate-new-buffer "*test-undead-1*"))
+ (buf2 (generate-new-buffer "*test-undead-2*")))
+ (unwind-protect
+ (progn
+ (add-to-list 'cj/undead-buffer-list "*test-undead-1*")
+ (add-to-list 'cj/undead-buffer-list "*test-undead-2*")
+ (cj/kill-all-other-buffers-and-windows)
+ (should (buffer-live-p main))
+ (should (buffer-live-p buf1))
+ (should (buffer-live-p buf2)))
+ (setq cj/undead-buffer-list orig)
+ (when (buffer-live-p buf1) (kill-buffer buf1))
+ (when (buffer-live-p buf2) (kill-buffer buf2))))
+ (test-kill-all-other-buffers-and-windows-teardown)))
+
+(ert-deftest test-kill-all-other-buffers-and-windows-should-keep-current-buffer ()
+ "Should always keep the current buffer alive."
+ (test-kill-all-other-buffers-and-windows-setup)
+ (unwind-protect
+ (let ((main (current-buffer)))
+ (cj/kill-all-other-buffers-and-windows)
+ (should (buffer-live-p main))
+ (should (eq main (current-buffer))))
+ (test-kill-all-other-buffers-and-windows-teardown)))
+
+(ert-deftest test-kill-all-other-buffers-and-windows-should-delete-all-other-windows ()
+ "Should delete all windows except current."
+ (test-kill-all-other-buffers-and-windows-setup)
+ (unwind-protect
+ (progn
+ (split-window)
+ (split-window)
+ (should (> (length (window-list)) 1))
+ (cj/kill-all-other-buffers-and-windows)
+ (should (one-window-p)))
+ (test-kill-all-other-buffers-and-windows-teardown)))
+
+;;; Boundary Cases
+
+(ert-deftest test-kill-all-other-buffers-and-windows-mixed-undead-and-regular-buffers ()
+ "With mix of undead and regular buffers, should handle both correctly."
+ (test-kill-all-other-buffers-and-windows-setup)
+ (unwind-protect
+ (let ((orig (copy-sequence cj/undead-buffer-list))
+ (main (current-buffer))
+ (regular (generate-new-buffer "*test-regular*"))
+ (undead (generate-new-buffer "*test-undead*")))
+ (unwind-protect
+ (progn
+ (add-to-list 'cj/undead-buffer-list "*test-undead*")
+ (cj/kill-all-other-buffers-and-windows)
+ (should (buffer-live-p main))
+ (should-not (buffer-live-p regular))
+ (should (buffer-live-p undead)))
+ (setq cj/undead-buffer-list orig)
+ (when (buffer-live-p regular) (kill-buffer regular))
+ (when (buffer-live-p undead) (kill-buffer undead))))
+ (test-kill-all-other-buffers-and-windows-teardown)))
+
+(ert-deftest test-kill-all-other-buffers-and-windows-all-undead-buffers-should-bury-all ()
+ "When all other buffers are undead, should bury all of them."
+ (test-kill-all-other-buffers-and-windows-setup)
+ (unwind-protect
+ (let ((orig (copy-sequence cj/undead-buffer-list))
+ (main (current-buffer))
+ (undead1 (generate-new-buffer "*test-all-undead-1*"))
+ (undead2 (generate-new-buffer "*test-all-undead-2*"))
+ (undead3 (generate-new-buffer "*test-all-undead-3*")))
+ (unwind-protect
+ (progn
+ (add-to-list 'cj/undead-buffer-list "*test-all-undead-1*")
+ (add-to-list 'cj/undead-buffer-list "*test-all-undead-2*")
+ (add-to-list 'cj/undead-buffer-list "*test-all-undead-3*")
+ (cj/kill-all-other-buffers-and-windows)
+ (should (buffer-live-p main))
+ (should (buffer-live-p undead1))
+ (should (buffer-live-p undead2))
+ (should (buffer-live-p undead3)))
+ (setq cj/undead-buffer-list orig)
+ (when (buffer-live-p undead1) (kill-buffer undead1))
+ (when (buffer-live-p undead2) (kill-buffer undead2))
+ (when (buffer-live-p undead3) (kill-buffer undead3))))
+ (test-kill-all-other-buffers-and-windows-teardown)))
+
+(ert-deftest test-kill-all-other-buffers-and-windows-should-prompt-for-modified-buffers ()
+ "Should call cj/save-some-buffers to handle modified buffers."
+ (test-kill-all-other-buffers-and-windows-setup)
+ (unwind-protect
+ (let ((main (current-buffer))
+ (file (cj/create-temp-test-file-with-content "original"))
+ save-called)
+ ;; Mock cj/save-some-buffers to track if it's called
+ (cl-letf (((symbol-function 'cj/save-some-buffers)
+ (lambda (&optional arg)
+ (setq save-called t))))
+ (let ((buf (find-file-noselect file)))
+ (unwind-protect
+ (progn
+ (with-current-buffer buf
+ (insert "modified"))
+ (cj/kill-all-other-buffers-and-windows)
+ (should save-called))
+ (when (buffer-live-p buf)
+ (set-buffer-modified-p nil)
+ (kill-buffer buf))))))
+ (test-kill-all-other-buffers-and-windows-teardown)))
+
+(provide 'test-undead-buffers-kill-all-other-buffers-and-windows)
+;;; test-undead-buffers-kill-all-other-buffers-and-windows.el ends here