summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-09-12 00:30:11 +0200
committercashmere <cashmere@autistici.org>2026-09-12 00:30:11 +0200
commit32329d9a384642dd231ed1f5a16aa6c85b8d0ef0 (patch)
tree4b2f793909a1f97e52213467cc9f60e810a886df /test
parenta2151bcd260a50f697220abf75f522623b0960c6 (diff)
downloademacs-32329d9a384642dd231ed1f5a16aa6c85b8d0ef0.tar.gz
relic: 2026-09-12T00:30:15+02:00
Diffstat (limited to 'test')
-rw-r--r--test/fossil-ui-test.el56
1 files changed, 56 insertions, 0 deletions
diff --git a/test/fossil-ui-test.el b/test/fossil-ui-test.el
index 6b61bd9..081a701 100644
--- a/test/fossil-ui-test.el
+++ b/test/fossil-ui-test.el
@@ -231,6 +231,62 @@
(should-not (string-search (string ?\e) rendered))
(should (text-property-not-all 0 (length rendered) 'face nil rendered))))
+(ert-deftest fossil-ui-delta-color-mode-follows-frame-background ()
+ (let ((fossil-ui-delta-color-mode 'auto)
+ (fossil-ui-delta-arguments '("--paging=never" "--color-only")))
+ (cl-letf (((symbol-function 'frame-parameter)
+ (lambda (_frame parameter)
+ (and (eq parameter 'background-mode) 'light))))
+ (should (equal (fossil-ui--effective-delta-arguments)
+ '("--light" "--paging=never" "--color-only"))))
+ (cl-letf (((symbol-function 'frame-parameter)
+ (lambda (_frame parameter)
+ (and (eq parameter 'background-mode) 'dark))))
+ (should (equal (fossil-ui--effective-delta-arguments)
+ '("--dark" "--paging=never" "--color-only"))))))
+
+(ert-deftest fossil-ui-delta-color-mode-respects-explicit-arguments ()
+ (let ((fossil-ui-delta-color-mode 'auto))
+ (dolist (arguments '(("--light" "--color-only")
+ ("--dark" "--color-only")
+ ("--syntax-theme" "GitHub" "--color-only")
+ ("--syntax-theme=GitHub" "--color-only")))
+ (let ((fossil-ui-delta-arguments arguments))
+ (should (eq (fossil-ui--effective-delta-arguments) arguments))))))
+
+(ert-deftest fossil-ui-theme-change-rerenders-open-diff-in-place ()
+ (save-window-excursion
+ (with-temp-buffer
+ (let* ((buffer (current-buffer))
+ (raw (mapconcat (lambda (number) (format "line %d" number)) (number-sequence 1 80) "\n"))
+ (context (list :root "/tmp/project/" :path "example.el" :diff raw)))
+ (fossil-ui-diff-mode)
+ (let ((inhibit-read-only t))
+ (insert raw))
+ (set-buffer-modified-p nil)
+ (setq-local fossil-ui-diff-context context)
+ (switch-to-buffer buffer)
+ (goto-char (point-min))
+ (forward-line 40)
+ (let ((point-before (point))
+ (window-before (selected-window)))
+ (set-window-start window-before (save-excursion
+ (goto-char (point-min))
+ (forward-line 20)
+ (point)))
+ (let ((start-before (window-start window-before)))
+ (cl-letf (((symbol-function 'fossil-ui--display-diff)
+ (lambda (_diff &optional _frame)
+ (propertize raw 'face 'success))))
+ (fossil-ui--theme-enabled 'test-theme))
+ (should (eq (selected-window) window-before))
+ (should (= (point) point-before))
+ (should (= (window-start window-before) start-before))
+ (should-not (buffer-modified-p))
+ (should (equal fossil-ui-diff-context context))
+ (should (equal (buffer-substring-no-properties (point-min) (point-max)) raw))
+ (should (eq (get-text-property (point-min) 'face) 'success))))))))
+
(ert-deftest fossil-ui-status-opens-rendered-dashboard ()
(fossil-ui-test--with-checkout
(fossil-ui-test--write (expand-file-name "tracked.txt" root) "changed content\n")