diff options
| author | John Keeping <john@keeping.me.uk> | 2013-04-08 20:12:38 +0100 | 
|---|---|---|
| committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2014-01-12 19:33:03 +0100 | 
| commit | 1b1974c45e5e23e5527aa43c4d9ece423a13dfdc (patch) | |
| tree | 863ba37c8c25b917e1823ec10db6600a9b41e129 | |
| parent | 382ecf152e1bd9546f6c84ace71c62ca07f6648b (diff) | |
tests: add Valgrind support
Now running tests with the "--valgrind" option will run cgit under
Valgrind instead of all Git commands.
Signed-off-by: John Keeping <john@keeping.me.uk>
| -rwxr-xr-x | tests/setup.sh | 37 | ||||
| -rwxr-xr-x | tests/valgrind/bin/cgit | 12 | 
2 files changed, 48 insertions, 1 deletions
| diff --git a/tests/setup.sh b/tests/setup.sh index 1d8677a..5476ced 100755 --- a/tests/setup.sh +++ b/tests/setup.sh @@ -15,13 +15,48 @@  # run_test 'repo index' 'cgit_url "/" | tidy -e'  # run_test 'repo summary' 'cgit_url "/foo" | tidy -e' +# We don't want to run Git commands through Valgrind, so we filter out the +# --valgrind option here and handle it ourselves.  We copy the arguments +# assuming that none contain a newline, although other whitespace is +# preserved. +LF=' +' +test_argv= + +while test $# != 0 +do +	case "$1" in +	--va|--val|--valg|--valgr|--valgri|--valgrin|--valgrind) +		cgit_valgrind=t +		test_argv="$test_argv${LF}--verbose" +		;; +	*) +		test_argv="$test_argv$LF$1" +		;; +	esac +	shift +done + +OLDIFS=$IFS +IFS=$LF +set -- $test_argv +IFS=$OLDIFS +  : ${TEST_DIRECTORY=$(pwd)/../git/t}  : ${TEST_OUTPUT_DIRECTORY=$(pwd)}  TEST_NO_CREATE_REPO=YesPlease  . "$TEST_DIRECTORY"/test-lib.sh  # Prepend the directory containing cgit to PATH. -PATH="$(pwd)/../..:$PATH" +if test -n "$cgit_valgrind" +then +	GIT_VALGRIND="$TEST_DIRECTORY/valgrind" +	CGIT_VALGRIND=$(cd ../valgrind && pwd) +	PATH="$CGIT_VALGRIND/bin:$PATH" +	export GIT_VALGRIND CGIT_VALGRIND +else +	PATH="$(pwd)/../..:$PATH" +fi  mkrepo() {  	name=$1 diff --git a/tests/valgrind/bin/cgit b/tests/valgrind/bin/cgit new file mode 100755 index 0000000..dcdfbe5 --- /dev/null +++ b/tests/valgrind/bin/cgit @@ -0,0 +1,12 @@ +#!/bin/sh + +# Note that we currently use Git's suppression file and there are variables +# $GIT_VALGRIND and $CGIT_VALGRIND which point to different places. +exec valgrind -q --error-exitcode=126 \ +	--suppressions="$GIT_VALGRIND/default.supp" \ +	--gen-suppressions=all \ +	--leak-check=no \ +	--track-origins=yes \ +	--log-fd=4 \ +	--input-fd=4 \ +	"$CGIT_VALGRIND/../../cgit" "$@" | 
