aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-11 12:24:01 -0500
committerCraig Jennings <c@cjennings.net>2026-07-11 12:24:01 -0500
commit5bee76514def9ca54c1bd52fb1a9c89ddfdab2ac (patch)
tree7a5ba0da9af3c70a1709361e8da5880ff768a760 /tests
parentc4b5fefa6712649c637a286886bd18ac412eba8d (diff)
downloaddotemacs-5bee76514def9ca54c1bd52fb1a9c89ddfdab2ac.tar.gz
dotemacs-5bee76514def9ca54c1bd52fb1a9c89ddfdab2ac.zip
fix(ui-theme): create persist/ before writing the saved theme
cj/theme-write-file-contents guarded on file-writable-p, which returns nil when the target's directory doesn't exist. On a fresh machine persist/ isn't there yet, so the theme write failed silently and the choice never persisted. Create the parent directory first, and still return nil if the path isn't writable.
Diffstat (limited to 'tests')
-rw-r--r--tests/test-ui-theme-persistence.el13
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/test-ui-theme-persistence.el b/tests/test-ui-theme-persistence.el
index 02bb105a..250b606b 100644
--- a/tests/test-ui-theme-persistence.el
+++ b/tests/test-ui-theme-persistence.el
@@ -32,6 +32,19 @@
"modus-vivendi")))
(delete-file file))))
+(ert-deftest test-ui-theme-write-file-contents-creates-missing-parent-dir ()
+ "Boundary: writing into a not-yet-existing directory creates it first.
+On a fresh machine `persist/' does not exist, and `file-writable-p' returns nil
+for a file inside a missing directory, so the write must create the parent."
+ (let* ((sandbox (make-temp-file "ui-theme-sandbox-" t))
+ (file (expand-file-name "persist/emacs-theme" sandbox)))
+ (unwind-protect
+ (progn
+ (should-not (file-directory-p (file-name-directory file)))
+ (should (cj/theme-write-file-contents "modus-vivendi" file))
+ (should (equal (cj/theme-read-file-contents file) "modus-vivendi")))
+ (delete-directory sandbox t))))
+
(ert-deftest test-ui-theme-write-file-contents-uses-write-region ()
"Theme persistence should write directly instead of visiting the file."
(let ((file (make-temp-file "ui-theme-write-region-"))