blob: bd202a195ec12abe3de75dd8d96044b2190a6646 (
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
|
;;; test-org-agenda-config--base-files.el --- Tests for the agenda base-file helper -*- lexical-binding: t; -*-
;;; Commentary:
;; cj/--org-agenda-base-files is the single source of the fixed agenda base list
;; (inbox, schedule, and the three calendars) that was previously spelled out as
;; a literal in three places. It now drops files that do not exist so org-agenda
;; never prompts to create a missing path (the hang class). The path vars are
;; special (defvar'd in user-constants), so they can be dynamically bound; tests
;; use real temp files for "exists" rather than mocking the `file-exists-p'
;; primitive.
;;; Code:
(require 'ert)
(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory))
(require 'org-agenda-config)
(defun test-oa-base--tmp ()
"Return a fresh existing temp file path."
(make-temp-file "oa-base-"))
(ert-deftest test-org-agenda-base-files-returns-existing-in-order ()
"Normal: returns inbox, schedule, gcal, pcal, dcal (all existing) in order."
(let* ((i (test-oa-base--tmp)) (s (test-oa-base--tmp)) (g (test-oa-base--tmp))
(p (test-oa-base--tmp)) (d (test-oa-base--tmp))
(inbox-file i) (schedule-file s) (gcal-file g) (pcal-file p) (dcal-file d))
(unwind-protect
(should (equal (cj/--org-agenda-base-files) (list i s g p d)))
(dolist (f (list i s g p d)) (ignore-errors (delete-file f))))))
(ert-deftest test-org-agenda-base-files-reflects-current-values ()
"Boundary: the helper reads the vars at call time (not a captured snapshot)."
(let* ((a (test-oa-base--tmp)) (b (test-oa-base--tmp))
(inbox-file a) (schedule-file b) (gcal-file b) (pcal-file b) (dcal-file b))
(unwind-protect
(progn
(should (equal (car (cj/--org-agenda-base-files)) a))
(setq inbox-file b)
(should (equal (car (cj/--org-agenda-base-files)) b))
(should (= (length (cj/--org-agenda-base-files)) 5)))
(ignore-errors (delete-file a))
(ignore-errors (delete-file b)))))
(ert-deftest test-org-agenda-base-files-drops-missing-files ()
"Boundary/Error: files that do not exist are dropped, so a fresh machine
without synced calendars never hands org-agenda a path it would prompt to create."
(let* ((i (test-oa-base--tmp)) (s (test-oa-base--tmp))
(inbox-file i) (schedule-file s)
(gcal-file "/no/such/gcal.org")
(pcal-file "/no/such/pcal.org")
(dcal-file "/no/such/dcal.org"))
(unwind-protect
(should (equal (cj/--org-agenda-base-files) (list i s)))
(ignore-errors (delete-file i))
(ignore-errors (delete-file s)))))
(provide 'test-org-agenda-config--base-files)
;;; test-org-agenda-config--base-files.el ends here
|