diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-05 14:10:30 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-05 14:10:30 -0500 |
| commit | 9206de07d7bb1e549aacada300f637aee1b620e9 (patch) | |
| tree | 540be33fc8d4e155bdc21ac8ca23d2eb8372b6e0 /tests/test-org-drill-display-state.el | |
| parent | 0d32f8f6df9406c12306d97592446408ba7984e3 (diff) | |
| download | org-drill-9206de07d7bb1e549aacada300f637aee1b620e9.tar.gz org-drill-9206de07d7bb1e549aacada300f637aee1b620e9.zip | |
test: cover --setup-display, --restore-display, --migrate-from-source, scope=directory
I added unit tests for the display-state helpers (capture text scale,
variable-pitch, modeline; restore them on session exit), the directory
branch of `org-drill-current-scope', and `--migrate-from-source''s
three-branch cond (matching ID, no ID, ignore-new-items).
Coverage moved from 81.8% to 82.4%.
Diffstat (limited to 'tests/test-org-drill-display-state.el')
| -rw-r--r-- | tests/test-org-drill-display-state.el | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/tests/test-org-drill-display-state.el b/tests/test-org-drill-display-state.el new file mode 100644 index 0000000..baad0a3 --- /dev/null +++ b/tests/test-org-drill-display-state.el @@ -0,0 +1,115 @@ +;;; test-org-drill-display-state.el --- Tests for display-state save/restore -*- lexical-binding: t; -*- + +;;; Commentary: +;; Tests for `org-drill--setup-display' and `org-drill--restore-display', +;; which save the user's text scale, variable-pitch mode, and modeline at +;; session start and put them back at session end. Also covers the +;; `directory' branch of `org-drill-current-scope'. + +;;; Code: + +(require 'ert) +(require 'cl-lib) +(require 'org) +(require 'org-drill) + +;;;; --save-display-state / --restore-display + +(ert-deftest test-save-display-state-records-current-buffer () + "After save, `org-drill--saved-display-buffer' holds the buffer." + (with-temp-buffer + (let ((org-drill-text-size-during-session nil) + (org-drill-use-variable-pitch nil) + (org-drill-hide-modeline-during-session nil) + (org-drill--saved-display-buffer nil)) + (org-drill--setup-display) + (should (eq (current-buffer) org-drill--saved-display-buffer))))) + +(ert-deftest test-save-display-state-skips-when-flags-nil () + "With every flag nil, save records buffer but doesn't capture face/mode state." + (with-temp-buffer + (let ((org-drill-text-size-during-session nil) + (org-drill-use-variable-pitch nil) + (org-drill-hide-modeline-during-session nil) + (org-drill--saved-display-buffer nil) + (org-drill--saved-text-scale 'sentinel) + (org-drill--saved-variable-pitch-mode 'unbound) + (org-drill--saved-modeline-format 'sentinel)) + (org-drill--setup-display) + ;; Saved-text-scale is left untouched because the flag was nil. + (should (eq 'sentinel org-drill--saved-text-scale)) + (should (eq 'unbound org-drill--saved-variable-pitch-mode)) + (should (eq 'sentinel org-drill--saved-modeline-format))))) + +(ert-deftest test-save-display-state-captures-modeline-when-hide-flag-set () + "With `org-drill-hide-modeline-during-session' t, the modeline is saved and cleared." + (with-temp-buffer + (let ((org-drill-text-size-during-session nil) + (org-drill-use-variable-pitch nil) + (org-drill-hide-modeline-during-session t) + (org-drill--saved-display-buffer nil) + (org-drill--saved-modeline-format nil)) + (setq-local mode-line-format "marker-mode-line") + (org-drill--setup-display) + (should (equal "marker-mode-line" org-drill--saved-modeline-format)) + (should (null mode-line-format))))) + +(ert-deftest test-restore-display-puts-modeline-back () + "Restore sets mode-line-format on the saved-display-buffer back to its prior value." + (with-temp-buffer + (let ((org-drill-text-size-during-session nil) + (org-drill-use-variable-pitch nil) + (org-drill-hide-modeline-during-session t) + (org-drill--saved-display-buffer (current-buffer)) + (org-drill--saved-text-scale nil) + (org-drill--saved-variable-pitch-mode 'unbound) + (org-drill--saved-modeline-format "saved-modeline")) + (setq-local mode-line-format nil) + (org-drill--restore-display) + (should (equal "saved-modeline" mode-line-format)) + (should (null org-drill--saved-modeline-format)) + (should (null org-drill--saved-display-buffer))))) + +(ert-deftest test-restore-display-handles-killed-buffer-target () + "If the saved-display-buffer was killed, restore must not crash." + (let ((tmp (generate-new-buffer " *drill-display-tmp*"))) + (let ((org-drill-text-size-during-session nil) + (org-drill-use-variable-pitch nil) + (org-drill-hide-modeline-during-session t) + (org-drill--saved-display-buffer tmp) + (org-drill--saved-text-scale nil) + (org-drill--saved-variable-pitch-mode 'unbound) + (org-drill--saved-modeline-format "saved-modeline")) + (kill-buffer tmp) + (org-drill--restore-display) + (should (null org-drill--saved-display-buffer))))) + +;;;; org-drill-current-scope (directory branch) + +(ert-deftest test-org-drill-current-scope-directory-returns-org-files-list () + "The `directory' scope expands to a list of .org files in the buffer's directory." + (let* ((tmpdir (make-temp-file "org-drill-scope-" t)) + (a (expand-file-name "a.org" tmpdir)) + (b (expand-file-name "b.org" tmpdir)) + (skip (expand-file-name ".hidden.org" tmpdir)) + (other (expand-file-name "c.txt" tmpdir))) + (unwind-protect + (progn + (write-region "" nil a) + (write-region "" nil b) + (write-region "" nil skip) + (write-region "" nil other) + (with-current-buffer (find-file-noselect a) + (let ((files (org-drill-current-scope 'directory))) + (should (member a files)) + (should (member b files)) + (should-not (member skip files)) + (should-not (member other files))))) + (when (file-exists-p a) (delete-file a)) + (when (file-exists-p b) (delete-file b)) + (when (file-exists-p skip) (delete-file skip)) + (when (file-exists-p other) (delete-file other)) + (delete-directory tmpdir)))) + +(provide 'test-org-drill-display-state) +;;; test-org-drill-display-state.el ends here |
