git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/8] Valgrind support: check for more than just programming errors

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Feb 3, 2009, 23:26 UTC
Message-ID
<alpine.DEB.1.00.0902040026080.9822@pacific.mpi-cbg.de>
In-Reply-To
<cover.1233702893u.git.johannes.schindelin@gmx.de>

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>
---
 t/test-lib.sh |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/t/test-lib.sh b/t/test-lib.sh
index aa9f938..2567c74 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
-- 
1.6.1.2.582.g3fdd5
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 3 of 11 in “Add valgrind support in test scripts”
  1. 1/8 Add valgrind support in test scriptsJohannes Schindelin, Feb 3, 2009
  2. 2/8 valgrind: ignore ldso and more libz errorsJohannes Schindelin, Feb 3, 2009
  3. 3/8 Valgrind support: check for more than just programming errorsJohannes Schindelin, Feb 3, 2009
  4. 4/8 test-lib.sh: optionally output to test-results/$TEST.out, tooJohannes Schindelin, Feb 3, 2009
  5. 5/8 t/Makefile: provide a 'valgrind' targetJohannes Schindelin, Feb 3, 2009
  6. 6/8 Add a script to coalesce the valgrind outputsJohannes Schindelin, Feb 3, 2009
  7. 7/8 Tests: let --valgrind imply --verbose and --teeJohannes Schindelin, Feb 3, 2009
  8. Jeff KingFeb 6, 2009
  9. Johannes SchindelinFeb 6, 2009
  10. Jeff KingFeb 6, 2009
  11. 8/8 test-lib: avoid assuming that templates/ are in the GIT_EXEC_PATHJohannes Schindelin, Feb 3, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.