[PATCH] test: Add some more emacs tests.

David Edmondson dme at dme.org
Thu Nov 25 06:09:06 PST 2010


Simple version of the `notmuch-hello' test, some tests of the matrix
reflection code and the 're:' stripping code.
---
 emacs/notmuch-test.el                |   62 +++++++++++++++++++++++++++++++--
 test/emacs-ert                       |    3 ++
 test/emacs.expected-output/emacs-ert |   20 ++++++----
 3 files changed, 73 insertions(+), 12 deletions(-)

diff --git a/emacs/notmuch-test.el b/emacs/notmuch-test.el
index ac6e5a7..7d76537 100644
--- a/emacs/notmuch-test.el
+++ b/emacs/notmuch-test.el
@@ -23,6 +23,23 @@
 
 ;;
 
+(defun notmuch-test-file-as-string (filename)
+  (with-temp-buffer
+    (insert-file-contents filename)
+    (buffer-string)))
+
+;; This tends not to work well except in batch mode.
+(defun notmuch-test-expected-result (name)
+  "Get the expected result of a test as a string."
+  (notmuch-test-file-as-string
+   (concat (getenv "EXPECTED") "/" name)))
+
+(defun notmuch-test-buffer-result (fn)
+  (funcall fn)
+  (buffer-substring-no-properties (point-min) (point-max)))
+
+;;
+
 (require 'notmuch-maildir-fcc)
 
 (ert-deftest notmuch-fcc-trivial ()
@@ -85,12 +102,49 @@
 
 ;;
 
-(defun notmuch-test ()
-  "Run the notmuch ERT tests."
-  (interactive)
+(require 'notmuch-hello)
+
+(ert-deftest notmuch-hello ()
+  "Check that `notmuch-hello' outputs correct data.
+
+Presumes that the email corpus is already present."
+
+  (should (string= (notmuch-test-buffer-result 'notmuch-hello)
+		   (notmuch-test-expected-result "notmuch-hello"))))
+
+(ert-deftest notmuch-hello-reflect ()
+  (should (equal '(1 4 7 10 2 5 8 11 3 6 9 12)
+		 (notmuch-hello-reflect '(1 2 3 4 5 6 7 8 9 10 11 12) 4)))
+
+  (should (equal '(1 4 7 10 2 5 8 nil 3 6 9 nil)
+		 (notmuch-hello-reflect '(1 2 3 4 5 6 7 8 9 10) 4))))
+
+;;
+
+(require 'notmuch-show)
+
+(ert-deftest notmuch-show-strip-re ()
+  (mapc '(lambda (test)
+	   (should (string= "fish"
+			    (notmuch-show-strip-re test))))
+	'("fish" "re: fish" "Re: fish" "RE: fish"))
 
-  (ert t))
+  (mapc '(lambda (test)
+	   (should (string= "some fish"
+			    (notmuch-show-strip-re test))))
+	'("some fish" "re: some fish" "some re: fish"))
+
+  (mapc '(lambda (test)
+	   (should-not (string= "some fish"
+				(notmuch-show-strip-re test))))
+	'(" some fish" "re: some fish " "somere: fish" "some fish re:")))
+
+;; 
 
 (defun notmuch-test-batch ()
   "Run the notmuch ERT tests in batch mode."
+
+  ;; Avoid the 10 column default of `emacs --batch'.
+  (set-frame-width (window-frame (get-buffer-window)) 80)
+
   (ert-run-tests-batch-and-exit))
diff --git a/test/emacs-ert b/test/emacs-ert
index 4a45a66..60da9b6 100755
--- a/test/emacs-ert
+++ b/test/emacs-ert
@@ -3,6 +3,9 @@ test_description="emacs interface (ert)"
 . test-lib.sh
 
 EXPECTED=../emacs.expected-output
+export EXPECTED
+
+add_email_corpus
 
 test_begin_subtest "Emacs tests using ert"
 output=$(emacs \
diff --git a/test/emacs.expected-output/emacs-ert b/test/emacs.expected-output/emacs-ert
index 50f592b..3cdf524 100644
--- a/test/emacs.expected-output/emacs-ert
+++ b/test/emacs.expected-output/emacs-ert
@@ -1,9 +1,13 @@
-Running 6 tests (today)
-   passed  1/6  notmuch-fcc-multiple
-   passed  2/6  notmuch-fcc-none
-   passed  3/6  notmuch-fcc-oldstyle
-   passed  4/6  notmuch-fcc-regexp
-   passed  5/6  notmuch-fcc-simple
-   passed  6/6  notmuch-fcc-trivial
+Source file `/one/home/dme/s/notmuch/emacs/notmuch-show.el' newer than byte-compiled file
+Running 9 tests (today)
+   passed  1/9  notmuch-fcc-multiple
+   passed  2/9  notmuch-fcc-none
+   passed  3/9  notmuch-fcc-oldstyle
+   passed  4/9  notmuch-fcc-regexp
+   passed  5/9  notmuch-fcc-simple
+   passed  6/9  notmuch-fcc-trivial
+   passed  7/9  notmuch-hello
+   passed  8/9  notmuch-hello-reflect
+   passed  9/9  notmuch-show-strip-re
 
-Ran 6 tests, 6 results as expected (today)
+Ran 9 tests, 9 results as expected (today)
-- 
1.7.2.3



More information about the notmuch mailing list