aboutsummaryrefslogtreecommitdiff
path: root/t/test-lib.sh
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2009-02-04 00:26:08 +0100
committerJunio C Hamano <gitster@pobox.com>2009-02-03 22:01:06 -0800
commitefd92ffd316d03360e1c8a348091e4f50f749d6f (patch)
tree012482c9748ecd91c21c5ed8d40dbed8829e9a1d /t/test-lib.sh
parent6a7e37c99f733821bd3a17432fa6e4591b63866c (diff)
downloadgit-efd92ffd316d03360e1c8a348091e4f50f749d6f.tar.gz
git-efd92ffd316d03360e1c8a348091e4f50f749d6f.tar.xz
Valgrind support: check for more than just programming errors
This patch makes --valgrind try to override _all_ Git binaries in the PATH, and it makes it an error to call *.sh and *.perl scripts directly. While it is not strictly necessary to look through the whole PATH to find git binaries to override, it is in line with running an expensive test (which valgrind is) to make extra sure that only binaries are tested that actually come from the git.git checkout. In the same spirit, we can test that neither our test suite nor our scripts try to run the *.sh or *.perl scripts directly. It's more like a "because we can" than a "this is tightly connected to valgrind", but in the author's opinion "because we can" is "so we should" in this case. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/test-lib.sh')
-rw-r--r--t/test-lib.sh15
1 files changed, 15 insertions, 0 deletions
diff --git a/t/test-lib.sh b/t/test-lib.sh
index da12b0aa4..5a58356c7 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -531,6 +531,10 @@ else
then
symlink_target=../valgrind.sh
fi
+ case "$base" in
+ *.sh|*.perl)
+ symlink_target=../unprocessed-script
+ esac
# create the link, or replace it if it is out of date
make_symlink "$symlink_target" "$GIT_VALGRIND/bin/$base" || exit
}
@@ -542,6 +546,17 @@ else
do
make_valgrind_symlink $file
done
+ OLDIFS=$IFS
+ IFS=:
+ for path in $PATH
+ do
+ ls "$path"/git-* 2> /dev/null |
+ while read file
+ do
+ make_valgrind_symlink "$file"
+ done
+ done
+ IFS=$OLDIFS
PATH=$GIT_VALGRIND/bin:$PATH
GIT_EXEC_PATH=$GIT_VALGRIND/bin
export GIT_VALGRIND