]> git.notmuchmail.org Git - notmuch/blobdiff - test/test-lib.sh
test: add notmuch_show_sanitize_all function that is a little more aggressive.
[notmuch] / test / test-lib.sh
index a1978279e5b46cf0d9a62f257f4efaaa68b2d71f..078f0602ad72792fb5fe3d6f7cdc378bb25e83c4 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 #
 # Copyright (c) 2005 Junio C Hamano
 #
@@ -351,8 +351,11 @@ ${additional_headers}"
 ${additional_headers}"
     fi
 
+    # Note that in the way we're setting it above and using it below,
+    # `additional_headers' will also serve as the header / body separator
+    # (empty line in between).
 
-cat <<EOF >"$gen_msg_filename"
+    cat <<EOF >"$gen_msg_filename"
 From: ${template[from]}
 To: ${template[to]}
 Message-Id: <${gen_msg_id}>
@@ -403,7 +406,7 @@ test_begin_subtest ()
     test_subtest_name="$1"
     # Remember stdout and stderr file descriptios and redirect test
     # output to the previously prepared file descriptors 3 and 4 (see
-    # bellow)
+    # below)
     if test "$verbose" != "t"; then exec 4>test.output 3>&4; fi
     exec 6>&1 7>&2 >&3 2>&4
     inside_subtest=t
@@ -438,6 +441,29 @@ test_expect_equal ()
     fi
 }
 
+test_expect_equal_file ()
+{
+       exec 1>&6 2>&7          # Restore stdout and stderr
+       inside_subtest=
+       test "$#" = 3 && { prereq=$1; shift; } || prereq=
+       test "$#" = 2 ||
+       error "bug in the test script: not 2 or 3 parameters to test_expect_equal"
+
+       output="$1"
+       expected="$2"
+       if ! test_skip "$@"
+       then
+               if diff -q "$expected" "$output" >/dev/null ; then
+                       test_ok_ "$test_subtest_name"
+               else
+                       testname=$this_test.$test_count
+                       mv "$output" $testname.output
+                       mv "$expected" $testname.expected
+                       test_failure_ "$test_subtest_name" "$(diff -u $testname.expected $testname.output)"
+               fi
+    fi
+}
+
 test_expect_equal_failure ()
 {
        exec 1>&6 2>&7          # Restore stdout and stderr
@@ -476,6 +502,12 @@ notmuch_show_sanitize ()
 {
     sed -e "$NOTMUCH_SHOW_FILENAME_SQUELCH"
 }
+notmuch_show_sanitize_all ()
+{
+    sed \
+       -e 's| filename:.*| filename:XXXXX|' \
+       -e 's| id:[^ ]* | id:XXXXX |'
+}
 
 # End of notmuch helper functions
 
@@ -789,9 +821,9 @@ fi
 #
 # --no-site-file       Don't load the site-wide startup stuff
 #
-# --directory          Ensure that the local notmuch.el source is found
+# --directory          Ensure that the local elisp sources are found
 #
-# --load               Force loading of notmuch.el
+# --load               Force loading of notmuch.el and test-lib.el
 #
 # notmuch-test-wait    Function for tests to use to wait for process completion
 #
@@ -801,6 +833,7 @@ fi
 
 emacs \$BATCH --no-init-file --no-site-file \
        --directory ../../emacs --load notmuch.el \
+       --directory .. --load test-lib.el \
        --eval "(defun notmuch-test-wait ()
                        (while (get-buffer-process (current-buffer))
                                (sleep-for 0.1)))" \