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>
This commit is contained in:
John Keeping 2013-04-08 20:12:38 +01:00 committed by Jason A. Donenfeld
parent 382ecf152e
commit 1b1974c45e
2 changed files with 48 additions and 1 deletions

View File

@ -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.
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

12
tests/valgrind/bin/cgit Executable file
View File

@ -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" "$@"