From 60c599036e528bc8a856c3312f0222cc7b1fd32a Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Mon, 20 Sep 2010 13:42:59 -0700 Subject: [PATCH] test: Fix test suite so that --valgrind option works. The output is ugly, and we need a better suppressions file, but this is at least a start. --- test/basic | 2 +- test/test-lib.sh | 13 ++----------- test/valgrind/default.supp | 0 test/valgrind/valgrind.sh | 22 ++++++++++++++++++++++ 4 files changed, 25 insertions(+), 12 deletions(-) create mode 100644 test/valgrind/default.supp create mode 100755 test/valgrind/valgrind.sh diff --git a/test/basic b/test/basic index 8e68ef8a..88704a17 100755 --- a/test/basic +++ b/test/basic @@ -52,7 +52,7 @@ test_expect_code 2 'failure to clean up causes the test to fail' ' # Ensure that all tests are being run test_begin_subtest 'Ensure that all available tests will be run by notmuch-test' tests_in_suite=$(grep TESTS= ../notmuch-test | sed -e "s/TESTS=\"\(.*\)\"/\1/" | tr " " "\n" | sort) -available=$(ls -1 ../ | grep -v -E "^(aggregate-results.sh|Makefile|Makefile.local|notmuch-test|README|test-lib.sh|test-results|tmp.*)" | sort) +available=$(ls -1 ../ | grep -v -E "^(aggregate-results.sh|Makefile|Makefile.local|notmuch-test|README|test-lib.sh|test-results|tmp.*|valgrind)" | sort) test_expect_equal "$tests_in_suite" "$available" ################################################################ diff --git a/test/test-lib.sh b/test/test-lib.sh index 15238705..42dfde13 100644 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -740,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 () { @@ -786,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" @@ -804,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" diff --git a/test/valgrind/default.supp b/test/valgrind/default.supp new file mode 100644 index 00000000..e69de29b diff --git a/test/valgrind/valgrind.sh b/test/valgrind/valgrind.sh new file mode 100755 index 00000000..582b4dca --- /dev/null +++ b/test/valgrind/valgrind.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +base=$(basename "$0") + +TRACK_ORIGINS= + +VALGRIND_VERSION=$(valgrind --version) +VALGRIND_MAJOR=$(expr "$VALGRIND_VERSION" : '[^0-9]*\([0-9]*\)') +VALGRIND_MINOR=$(expr "$VALGRIND_VERSION" : '[^0-9]*[0-9]*\.\([0-9]*\)') +test 3 -gt "$VALGRIND_MAJOR" || +test 3 -eq "$VALGRIND_MAJOR" -a 4 -gt "$VALGRIND_MINOR" || +TRACK_ORIGINS=--track-origins=yes + +exec valgrind -q --error-exitcode=126 \ + --leak-check=no \ + --suppressions="$GIT_VALGRIND/default.supp" \ + --gen-suppressions=all \ + $TRACK_ORIGINS \ + --log-fd=4 \ + --input-fd=4 \ + $GIT_VALGRIND_OPTIONS \ + "$GIT_VALGRIND"/../../"$base" "$@"