]> git.notmuchmail.org Git - notmuch/blobdiff - test/test-lib.sh
test: Fix test suite so that --valgrind option works.
[notmuch] / test / test-lib.sh
index 35ff3d98af20e86d6c3294cd562164f412c9bf00..42dfde1399b8d43a5baef038411c53d8b2a5e7ad 100644 (file)
@@ -373,19 +373,37 @@ add_message ()
     notmuch new > /dev/null
 }
 
-pass_if_equal ()
+test_begin_subtest ()
 {
-    output=$1
-    expected=$2
+    test_subtest_name="$1"
+}
 
-    if [ "$output" = "$expected" ]; then
-       true
-    else
-       testname=$this_test.$test_count
-       echo "$expected" > $testname.expected
-       echo "$output" > $testname.output
-       diff -u $testname.expected $testname.output
-       false
+# Pass test if two arguments match
+#
+# Note: Unlike all other test_expect_* functions, this function does
+# not accept a test name. Instead, the caller should call
+# test_begin_subtest before calling this function in order to set the
+# name.
+test_expect_equal ()
+{
+       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
+               say >&3 "expecting success: diff $output $expected"
+               if [ "$output" = "$expected" ]; then
+                       test_ok_ "$test_subtest_name"
+               else
+                       testname=$this_test.$test_count
+                       echo "$expected" > $testname.expected
+                       echo "$output" > $testname.output
+                       test_failure_ "$test_subtest_name" "$(diff -u $testname.expected $testname.output)"
+               fi
+               echo >&3 ""
     fi
 }
 
@@ -722,7 +740,6 @@ find_notmuch_path ()
 # Test the binaries we have just built.  The tests are kept in
 # test/ subdirectory and are run in 'trash directory' subdirectory.
 TEST_DIRECTORY=$(pwd)
-# FIXME: Only the normal case bellow is updated to notmuch
 if test -n "$valgrind"
 then
        make_symlink () {
@@ -768,15 +785,12 @@ then
        # override all git executables in TEST_DIRECTORY/..
        GIT_VALGRIND=$TEST_DIRECTORY/valgrind
        mkdir -p "$GIT_VALGRIND"/bin
-       for file in $TEST_DIRECTORY/../git* $TEST_DIRECTORY/../test-*
-       do
-               make_valgrind_symlink $file
-       done
+       make_valgrind_symlink $TEST_DIRECTORY/../notmuch
        OLDIFS=$IFS
        IFS=:
        for path in $PATH
        do
-               ls "$path"/git-* 2> /dev/null |
+               ls "$path"/notmuch 2> /dev/null |
                while read file
                do
                        make_valgrind_symlink "$file"
@@ -786,11 +800,6 @@ then
        PATH=$GIT_VALGRIND/bin:$PATH
        GIT_EXEC_PATH=$GIT_VALGRIND/bin
        export GIT_VALGRIND
-elif test -n "$GIT_TEST_INSTALLED" ; then
-       GIT_EXEC_PATH=$($GIT_TEST_INSTALLED/git --exec-path)  ||
-       error "Cannot run git from $GIT_TEST_INSTALLED."
-       PATH=$GIT_TEST_INSTALLED:$TEST_DIRECTORY/..:$PATH
-       GIT_EXEC_PATH=${GIT_TEST_EXEC_PATH:-$GIT_EXEC_PATH}
 else # normal case
        notmuch_path=`find_notmuch_path "$TEST_DIRECTORY"`
        test -n "$notmuch_path" && PATH="$notmuch_path:$PATH"