diff options
| author | Craig Jennings <c@cjennings.net> | 2025-10-22 12:27:05 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2025-10-22 12:27:05 -0500 |
| commit | c4e9232f297ffda4443477c589f29052178d2c87 (patch) | |
| tree | f4c50c999bf18a57e08c439ad244b23b006d0730 /tests/test-undead-buffers-undead-buffer-p.el | |
| parent | 2a543ea6a0fd018a24008fba514a6967c3f62cfb (diff) | |
feat: undead-buffers: Add `cj/make-buffer-undead` function and tests
Introduce a new function `cj/make-buffer-undead` that appends a
buffer name to the `cj/undead-buffer-list`, preventing it from being
killed. This comes along with a suite of tests to check various
scenarios and edge cases for handling undead buffers.
Additionally, add tests for related functions:
`cj/kill-buffer-or-bury-alive`, `cj/kill-buffer-and-window`, and
others to ensure they correctly manage buffers, particularly with
undead-status considerations.
Refactor `undead-buffer-list` naming for consistency and clarity in
the module.
Diffstat (limited to 'tests/test-undead-buffers-undead-buffer-p.el')
| -rw-r--r-- | tests/test-undead-buffers-undead-buffer-p.el | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/test-undead-buffers-undead-buffer-p.el b/tests/test-undead-buffers-undead-buffer-p.el new file mode 100644 index 00000000..107256c9 --- /dev/null +++ b/tests/test-undead-buffers-undead-buffer-p.el @@ -0,0 +1,106 @@ +;;; test-undead-buffers-undead-buffer-p.el --- Tests for cj/undead-buffer-p -*- lexical-binding: t; -*- + +;;; Commentary: +;; Tests for the cj/undead-buffer-p function from undead-buffers.el + +;;; Code: + +(require 'ert) +(require 'undead-buffers) +(require 'testutil-general) + +;;; Setup and Teardown + +(defun test-undead-buffer-p-setup () + "Setup for undead-buffer-p tests." + (cj/create-test-base-dir)) + +(defun test-undead-buffer-p-teardown () + "Teardown for undead-buffer-p tests." + (cj/delete-test-base-dir)) + +;;; Normal Cases + +(ert-deftest test-undead-buffer-p-modified-file-buffer-should-return-true () + "A modified file-backed buffer not in undead list should return t." + (test-undead-buffer-p-setup) + (unwind-protect + (let* ((file (cj/create-temp-test-file-with-content "test content")) + (buf (find-file-noselect file))) + (unwind-protect + (progn + (with-current-buffer buf + (insert "more content") + (should (cj/undead-buffer-p)))) + (when (buffer-live-p buf) + (set-buffer-modified-p nil) + (kill-buffer buf)))) + (test-undead-buffer-p-teardown))) + +(ert-deftest test-undead-buffer-p-undead-modified-file-buffer-should-return-nil () + "A modified file-backed undead buffer should return nil." + (test-undead-buffer-p-setup) + (unwind-protect + (let* ((orig (copy-sequence cj/undead-buffer-list)) + (file (cj/create-temp-test-file-with-content "test content")) + (buf (find-file-noselect file))) + (unwind-protect + (progn + (add-to-list 'cj/undead-buffer-list (buffer-name buf)) + (with-current-buffer buf + (insert "more content") + (should-not (cj/undead-buffer-p)))) + (setq cj/undead-buffer-list orig) + (when (buffer-live-p buf) + (set-buffer-modified-p nil) + (kill-buffer buf)))) + (test-undead-buffer-p-teardown))) + +(ert-deftest test-undead-buffer-p-scratch-buffer-should-return-nil () + "The *scratch* buffer should return nil (it's undead)." + (test-undead-buffer-p-setup) + (unwind-protect + (with-current-buffer "*scratch*" + (should-not (cj/undead-buffer-p))) + (test-undead-buffer-p-teardown))) + +;;; Boundary Cases + +(ert-deftest test-undead-buffer-p-unmodified-file-buffer-should-return-nil () + "An unmodified file buffer should return nil." + (test-undead-buffer-p-setup) + (unwind-protect + (let* ((file (cj/create-temp-test-file-with-content "test content")) + (buf (find-file-noselect file))) + (unwind-protect + (with-current-buffer buf + (should-not (cj/undead-buffer-p))) + (when (buffer-live-p buf) + (kill-buffer buf)))) + (test-undead-buffer-p-teardown))) + +(ert-deftest test-undead-buffer-p-modified-buffer-without-file-should-return-nil () + "A modified buffer without a backing file should return nil." + (test-undead-buffer-p-setup) + (unwind-protect + (let ((buf (generate-new-buffer "*test-no-file*"))) + (unwind-protect + (with-current-buffer buf + (insert "content") + (set-buffer-modified-p t) + (should-not (cj/undead-buffer-p))) + (when (buffer-live-p buf) + (set-buffer-modified-p nil) + (kill-buffer buf)))) + (test-undead-buffer-p-teardown))) + +(ert-deftest test-undead-buffer-p-temporary-buffer-should-return-nil () + "A temporary buffer should return nil." + (test-undead-buffer-p-setup) + (unwind-protect + (with-temp-buffer + (should-not (cj/undead-buffer-p))) + (test-undead-buffer-p-teardown))) + +(provide 'test-undead-buffers-undead-buffer-p) +;;; test-undead-buffers-undead-buffer-p.el ends here |
