summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2011-06-17 16:36:32 -0400
committerJunio C Hamano <gitster@pobox.com>2011-06-17 13:48:53 -0700
commit36bfb0e5f6004e4c4ac9334107dc185c316839a7 (patch)
tree0d572261e1ef9c209be19a853be46124fd664f3a
parent7ef4d6b928281eff2bfcd0b3d76b80f4385f2f3d (diff)
downloadgit-36bfb0e5f6004e4c4ac9334107dc185c316839a7.tar.gz
tests: link shell libraries into valgrind directory
When we run tests under valgrind, we symlink anything executable that starts with git-* or test-* into a special valgrind bin directory, and then make that our GIT_EXEC_PATH. However, shell libraries like git-sh-setup do not have the executable bit marked, and did not get symlinked. This means that any test looking for shell libraries in our exec-path would fail to find them, even though that is a fine thing to do when testing against a regular git build (or in a git install, for that matter). t2300 demonstrated this problem. The fix is to symlink these shell libraries directly into the valgrind directory. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--t/test-lib.sh9
1 files changed, 7 insertions, 2 deletions
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 64390d716d..8c57a00595 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -884,8 +884,13 @@ then
}
make_valgrind_symlink () {
- # handle only executables
- test -x "$1" || return
+ # handle only executables, unless they are shell libraries that
+ # need to be in the exec-path. We will just use "#!" as a
+ # guess for a shell-script, since we have no idea what the user
+ # may have configured as the shell path.
+ test -x "$1" ||
+ test "#!" = "$(head -c 2 <"$1")" ||
+ return;
base=$(basename "$1")
symlink_target=$GIT_BUILD_DIR/$base