]> git.notmuchmail.org Git - notmuch/commitdiff
test/emacs: test notmuch-mua-subject-check
authorTony Zorman <soliditsallgood@mailbox.org>
Sun, 29 Oct 2023 07:25:21 +0000 (08:25 +0100)
committerDavid Bremner <david@tethera.net>
Thu, 25 Jul 2024 10:44:49 +0000 (19:44 +0900)
Amended by db: rename test file to avoid collision.

test/T770-emacs-subject-warnings.sh [new file with mode: 0755]
test/emacs-subject-warnings.el [new file with mode: 0644]

diff --git a/test/T770-emacs-subject-warnings.sh b/test/T770-emacs-subject-warnings.sh
new file mode 100755 (executable)
index 0000000..f9d2714
--- /dev/null
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+
+test_description="emacs subject warnings"
+. $(dirname "$0")/test-lib.sh || exit 1
+. $NOTMUCH_SRCDIR/test/test-lib-emacs.sh || exit 1
+
+test_require_emacs
+
+test_begin_subtest "notmuch-test-subject-warning part 1"
+test_emacs_expect_t '(notmuch-test-subject-warning-1)'
+
+test_done
diff --git a/test/emacs-subject-warnings.el b/test/emacs-subject-warnings.el
new file mode 100644 (file)
index 0000000..1e54742
--- /dev/null
@@ -0,0 +1,48 @@
+(require 'cl-lib)
+(require 'notmuch-mua)
+
+(defun subject-check-test (&optional fn)
+  "Test `notmuch-mua-subject-check'.
+Optionally, evaluate FN before doing the test.
+
+Return t if the message would be sent, and nil otherwise."
+  (notmuch-mua-mail)
+  (message-goto-subject)
+  (when fn
+    (funcall fn))
+  (prog1
+      (condition-case nil
+         ;; Force `y-or-n-p' to always return `nil', as if the user
+         ;; pressed "n".
+         (cl-letf (((symbol-function 'y-or-n-p)
+                    (lambda (&rest args) nil)))
+           (notmuch-mua-subject-check)
+           t)
+       ('error nil))
+    (set-buffer-modified-p nil)
+    (kill-buffer (current-buffer))))
+
+(defvar subject-check-tests
+  '(;; These are okay.
+    (t . (lambda () (insert "something")))
+    ;; These should not be okay.
+    (nil)
+    (nil . (lambda () (insert "         ")))
+    (nil . (lambda () (insert "                        ")))
+    (nil . (lambda () (insert " ")))  ; NON-BREAKING SPACE
+    ))
+
+(defun notmuch-test-subject-warning-1 ()
+  (let (output expected)
+    (dolist (test subject-check-tests)
+      (let* ((expect (car test))
+            (body (cdr test))
+            (result (subject-check-test body)))
+       (push expect expected)
+       (push (if (eq result expect)
+                 result
+               ;; In the case of a failure, include the test
+               ;; details to make it simpler to debug.
+               (format "%S <-- %S" result body))
+             output)))
+    (notmuch-test-expect-equal output expected)))