Testing locally built git executables under valgrind is not immediate. Something like the following does not work: $ valgrind ./bin-wrappers/git because the wrapper script forks and execs the command and valgrind does not track children processes by default. Something like the following may work: $ valgrind --trace-children=yes ./bin-wrappers/git However it's counterintuitive and not ideal anyways because valgrind is supposed to be called on the actual executable, not on wrapper scripts. So, following the idea from commit 6a94088cc ("test: facilitate debugging Git executables in tests with gdb", 2015-10-30) provide a mechanism in the wrapper script to call valgrind directly on the actual executable. This mechanism could even be used by the test infrastructure in the future, but it is already useful by its own on the command line: $ GIT_TEST_VALGRIND=1 \ GIT_VALGRIND_OPTIONS="--leak-check=full" \ ./bin-wrappers/git Signed-off-by: Antonio Ospite <ao2@xxxxxx> --- wrap-for-bin.sh | 4 ++++ 1 file changed, 4 insertions(+) mode change 100644 => 100755 wrap-for-bin.sh diff --git a/wrap-for-bin.sh b/wrap-for-bin.sh old mode 100644 new mode 100755 index 584240881..502d567bd --- a/wrap-for-bin.sh +++ b/wrap-for-bin.sh @@ -24,6 +24,10 @@ if test -n "$GIT_TEST_GDB" then unset GIT_TEST_GDB exec gdb --args "${GIT_EXEC_PATH}/@@PROG@@" "$@" +elif test -n "$GIT_TEST_VALGRIND" +then + unset GIT_TEST_VALGRIND + exec valgrind $GIT_VALGRIND_OPTIONS "${GIT_EXEC_PATH}/@@PROG@@" "$@" else exec "${GIT_EXEC_PATH}/@@PROG@@" "$@" fi -- 2.17.0