blob: dcd08e9660416b1600434e10ca84d70d96b624dc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
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
|