X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=test%2Ftest-lib.el;h=6831b46f668b771ed1234e7a3ed618a75adb8876;hb=2c1d1107f5dacdb4a2c514909fd96f45f83e2f3c;hp=044c2da46639226a5f5acb1fcaf81ec21566117f;hpb=96baa2231882e9a9025797b1f9945ba6b2751dd4;p=notmuch diff --git a/test/test-lib.el b/test/test-lib.el index 044c2da4..6831b46f 100644 --- a/test/test-lib.el +++ b/test/test-lib.el @@ -1,4 +1,4 @@ -;; test-lib.el --- auxiliary stuff for Notmuch Emacs tests. +;;; test-lib.el --- auxiliary stuff for Notmuch Emacs tests ;; ;; Copyright © Carl Worth ;; Copyright © David Edmondson @@ -20,6 +20,8 @@ ;; ;; Authors: Dmitry Kurochkin +;;; Code: + (require 'cl-lib) ;; Ensure that the dynamic variables that are defined by this library @@ -97,13 +99,8 @@ running, quit if it terminated." (add-hook 'notmuch-hello-refresh-hook (lambda () (cl-incf notmuch-hello-refresh-hook-counter))) -(defadvice notmuch-search-process-filter (around pessimal activate disable) - "Feed notmuch-search-process-filter one character at a time." - (let ((string (ad-get-arg 1))) - (cl-loop for char across string - do (progn - (ad-set-arg 1 (char-to-string char)) - ad-do-it)))) +(defvar notmuch-test-tag-hook-output nil) +(defun notmuch-test-tag-hook () (push (cons query tag-changes) notmuch-test-tag-hook-output)) (defun notmuch-test-mark-links () "Enclose links in the current buffer with << and >>." @@ -162,6 +159,33 @@ running, quit if it terminated." (lambda (x) `(prog1 ,x (notmuch-post-command))) body))) +;; For testing functions in +;; notmuch-{search,tree,unsorted}-result-format +(defun notmuch-test-result-flags (format-string result) + (let ((tags-to-letters (quote (("attachment" . "&") + ("signed" . "=") + ("unread" . "u") + ("inbox" . "i")))) + (tags (plist-get result :tags))) + (format format-string + (mapconcat (lambda (t2l) + (if (member (car t2l) tags) + (cdr t2l) + " ")) + tags-to-letters "")))) + +;; Log any signalled error (and other messages) to MESSAGES +;; Log "COMPLETE" if forms complete without error. +(defmacro test-log-error (&rest body) + `(progn + (with-current-buffer "*Messages*" + (let ((inhibit-read-only t)) (erase-buffer))) + (condition-case err + (progn ,@body + (message "COMPLETE")) + (t (message "%s" err))) + (with-current-buffer "*Messages*" (test-output "MESSAGES")))) + ;; For historical reasons, we hide deleted tags by default in the test ;; suite (setq notmuch-tag-deleted-formats