]> git.notmuchmail.org Git - notmuch/blobdiff - test/test-lib.el
Merge branch 'release'
[notmuch] / test / test-lib.el
index dece811e6136064b84afec343161c1e25f5c9dec..9946010bfb9e37f1ff332493c3a55e3024233187 100644 (file)
@@ -16,7 +16,7 @@
 ;; General Public License for more details.
 ;;
 ;; You should have received a copy of the GNU General Public License
 ;; General Public License for more details.
 ;;
 ;; You should have received a copy of the GNU General Public License
-;; along with Notmuch.  If not, see <http://www.gnu.org/licenses/>.
+;; along with Notmuch.  If not, see <https://www.gnu.org/licenses/>.
 ;;
 ;; Authors: Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
 
 ;;
 ;; Authors: Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
 
 
 (defun test-output (&optional filename)
   "Save current buffer to file FILENAME.  Default FILENAME is OUTPUT."
 
 (defun test-output (&optional filename)
   "Save current buffer to file FILENAME.  Default FILENAME is OUTPUT."
+  (notmuch-post-command)
   (write-region (point-min) (point-max) (or filename "OUTPUT")))
 
 (defun test-visible-output (&optional filename)
   "Save visible text in current buffer to file FILENAME.  Default
 FILENAME is OUTPUT."
   (write-region (point-min) (point-max) (or filename "OUTPUT")))
 
 (defun test-visible-output (&optional filename)
   "Save visible text in current buffer to file FILENAME.  Default
 FILENAME is OUTPUT."
-  (let ((text (visible-buffer-string)))
+  (notmuch-post-command)
+  (let ((text (visible-buffer-string))
+       ;; Tests expect output in UTF-8 encoding
+       (coding-system-for-write 'utf-8))
     (with-temp-file (or filename "OUTPUT") (insert text))))
 
 (defun visible-buffer-string ()
     (with-temp-file (or filename "OUTPUT") (insert text))))
 
 (defun visible-buffer-string ()
@@ -77,12 +81,22 @@ invisible text."
        (setq start next-pos)))
     str))
 
        (setq start next-pos)))
     str))
 
-(defun orphan-watchdog (pid)
+;; process-attributes is not defined everywhere, so define an
+;; alternate way to test if a process still exists.
+
+(defun test-process-running (pid)
+  (= 0
+   (signal-process pid 0)))
+
+(defun orphan-watchdog-check (pid)
   "Periodically check that the process with id PID is still
 running, quit if it terminated."
   "Periodically check that the process with id PID is still
 running, quit if it terminated."
-  (if (not (process-attributes pid))
-      (kill-emacs)
-    (run-at-time "1 min" nil 'orphan-watchdog pid)))
+  (if (not (test-process-running pid))
+      (kill-emacs)))
+
+(defun orphan-watchdog (pid)
+  "Initiate orphan watchdog check."
+  (run-at-time 60 60 'orphan-watchdog-check pid))
 
 (defun hook-counter (hook)
   "Count how many times a hook is called.  Increments
 
 (defun hook-counter (hook)
   "Count how many times a hook is called.  Increments
@@ -155,3 +169,37 @@ nothing."
 
      (t
       (notmuch-test-report-unexpected output expected)))))
 
      (t
       (notmuch-test-report-unexpected output expected)))))
+
+(defun notmuch-post-command ()
+  (run-hooks 'post-command-hook))
+
+(defmacro notmuch-test-progn (&rest body)
+  (cons 'progn
+       (mapcar
+        (lambda (x) `(prog1 ,x (notmuch-post-command)))
+        body)))
+
+;; For historical reasons, we hide deleted tags by default in the test
+;; suite
+(setq notmuch-tag-deleted-formats
+      '((".*" nil)))
+
+;; Also for historical reasons, we set the fcc handler to file not
+;; insert.
+
+(setq notmuch-maildir-use-notmuch-insert nil)
+
+;; force a common html renderer, to avoid test variations between
+;; environments
+
+(setq mm-text-html-renderer 'html2text)
+
+;; Set some variables for S/MIME tests.
+
+(setq smime-keys '(("" "test_suite.pem" nil)))
+
+(setq mml-smime-use 'openssl)
+
+;; all test keys are without passphrase
+(eval-after-load 'smime
+  '(defun smime-ask-passphrase (cache)  nil))