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>

Jeff King committed Jun 17, 2011 at 16:36 UTC 36bfb0e5f6004e4c4ac9334107dc185c316839a7
1 file changed +7 -2
t/test-lib.sh
+7 -2
@@ -884,8 +884,13 @@ then
884 }
885
886 make_valgrind_symlink () {
887 - # handle only executables
888 - test -x "$1" || return
887 + # handle only executables, unless they are shell libraries that
888 + # need to be in the exec-path. We will just use "#!" as a
889 + # guess for a shell-script, since we have no idea what the user
890 + # may have configured as the shell path.
891 + test -x "$1" ||
892 + test "#!" = "$(head -c 2 <"$1")" ||
893 + return;
894
895 base=$(basename "$1")
896 symlink_target=$GIT_BUILD_DIR/$base