]> git.notmuchmail.org Git - notmuch/blobdiff - test/test-lib.sh
test: Fix the search and dump-restore tests to operator on non-empty mail store.
[notmuch] / test / test-lib.sh
index 42dfde1399b8d43a5baef038411c53d8b2a5e7ad..5f7fa14172efc7a01d5c337540f9e771f84811f9 100644 (file)
@@ -49,15 +49,6 @@ unset CDPATH
 
 unset GREP_OPTIONS
 
-case $(echo $GIT_TRACE |tr "[A-Z]" "[a-z]") in
-       1|2|true)
-               echo "* warning: Some tests will not work if GIT_TRACE" \
-                       "is set as to trace on STDERR ! *"
-               echo "* warning: Please set GIT_TRACE to something" \
-                       "other than 1, 2 or true ! *"
-               ;;
-esac
-
 # Convenience
 #
 # A regexp to match 5 and 40 hexdigits
@@ -163,7 +154,7 @@ then
        exit 0
 fi
 
-echo "Testing ${test_description}"
+echo $(basename "$0"): "Testing ${test_description}"
 
 exec 5>&1
 if test "$verbose" = "t"
@@ -363,7 +354,7 @@ EOF
     increment_mtime "$(dirname "${gen_msg_filename}")"
 }
 
-# Generate a new message and add it to the index.
+# Generate a new message and add it to the database.
 #
 # All of the arguments and return values supported by generate_message
 # are also supported here, so see that function for details.
@@ -373,6 +364,24 @@ add_message ()
     notmuch new > /dev/null
 }
 
+# Generate a corpus of email and add it to the database.
+#
+# This corpus is fixed, (it happens to be 50 messages from early in
+# the history of the notmuch mailing list), which allows for reliably
+# testing commands that need to operate on a not-totally-trivial
+# number of messages.
+add_email_corpus ()
+{
+    rm -rf ${MAIL_DIR}
+    if [ -d ../corpus.mail ]; then
+       cp -a ../corpus.mail ${MAIL_DIR}
+    else
+       cp -a ../corpus ${MAIL_DIR}
+       notmuch new
+       cp -a ${MAIL_DIR} ../corpus.mail
+    fi
+}
+
 test_begin_subtest ()
 {
     test_subtest_name="$1"
@@ -394,7 +403,6 @@ test_expect_equal ()
        expected="$2"
        if ! test_skip "$@"
        then
-               say >&3 "expecting success: diff $output $expected"
                if [ "$output" = "$expected" ]; then
                        test_ok_ "$test_subtest_name"
                else
@@ -403,15 +411,9 @@ test_expect_equal ()
                        echo "$output" > $testname.output
                        test_failure_ "$test_subtest_name" "$(diff -u $testname.expected $testname.output)"
                fi
-               echo >&3 ""
     fi
 }
 
-TEST_DIR=$(pwd)/test.$$
-MAIL_DIR=${TEST_DIR}/mail
-export NOTMUCH_CONFIG=${TEST_DIR}/notmuch-config
-NOTMUCH=notmuch
-
 NOTMUCH_NEW ()
 {
     notmuch new | grep -v -E -e '^Processed [0-9]*( total)? file|Found [0-9]* total file'
@@ -500,7 +502,7 @@ test_run_ () {
 test_skip () {
        test_count=$(($test_count+1))
        to_skip=
-       for skp in $GIT_SKIP_TESTS
+       for skp in $NOTMUCH_SKIP_TESTS
        do
                case $this_test.$test_count in
                $skp)
@@ -531,7 +533,6 @@ test_expect_failure () {
        error "bug in the test script: not 2 or 3 parameters to test-expect-failure"
        if ! test_skip "$@"
        then
-               say >&3 "checking known breakage: $2"
                test_run_ "$2"
                if [ "$?" = 0 -a "$eval_ret" = 0 ]
                then
@@ -540,7 +541,6 @@ test_expect_failure () {
                        test_known_broken_failure_ "$1"
                fi
        fi
-       echo >&3 ""
 }
 
 test_expect_success () {
@@ -549,7 +549,6 @@ test_expect_success () {
        error "bug in the test script: not 2 or 3 parameters to test-expect-success"
        if ! test_skip "$@"
        then
-               say >&3 "expecting success: $2"
                test_run_ "$2"
                if [ "$?" = 0 -a "$eval_ret" = 0 ]
                then
@@ -558,7 +557,6 @@ test_expect_success () {
                        test_failure_ "$@"
                fi
        fi
-       echo >&3 ""
 }
 
 test_expect_code () {
@@ -567,7 +565,6 @@ test_expect_code () {
        error "bug in the test script: not 3 or 4 parameters to test-expect-code"
        if ! test_skip "$@"
        then
-               say >&3 "expecting exit code $1: $3"
                test_run_ "$3"
                if [ "$?" = 0 -a "$eval_ret" = "$1" ]
                then
@@ -576,7 +573,6 @@ test_expect_code () {
                        test_failure_ "$@"
                fi
        fi
-       echo >&3 ""
 }
 
 # test_external runs external test scripts that provide continuous
@@ -622,7 +618,6 @@ test_external_without_stderr () {
        [ -f "$stderr" ] || error "Internal error: $stderr disappeared."
        descr="no stderr: $1"
        shift
-       say >&3 "expecting no stderr from previous command"
        if [ ! -s "$stderr" ]; then
                rm "$stderr"
                test_ok_ "$descr"
@@ -782,7 +777,7 @@ then
                make_symlink "$symlink_target" "$GIT_VALGRIND/bin/$base" || exit
        }
 
-       # override all git executables in TEST_DIRECTORY/..
+       # override notmuch executable in TEST_DIRECTORY/..
        GIT_VALGRIND=$TEST_DIRECTORY/valgrind
        mkdir -p "$GIT_VALGRIND"/bin
        make_valgrind_symlink $TEST_DIRECTORY/../notmuch
@@ -824,7 +819,7 @@ MAIL_DIR="${TMP_DIRECTORY}/mail"
 export NOTMUCH_CONFIG="${TMP_DIRECTORY}/notmuch-config"
 
 mkdir -p "${test}"
-mkdir "$MAIL_DIR"
+mkdir -p "${MAIL_DIR}"
 
 cat <<EOF >"${NOTMUCH_CONFIG}"
 [database]
@@ -843,10 +838,10 @@ cd -P "$test" || error "Cannot setup test environment"
 
 this_test=${0##*/}
 this_test=${this_test%%-*}
-for skp in $GIT_SKIP_TESTS
+for skp in $NOTMUCH_SKIP_TESTS
 do
        to_skip=
-       for skp in $GIT_SKIP_TESTS
+       for skp in $NOTMUCH_SKIP_TESTS
        do
                case "$this_test" in
                $skp)