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

[PATCH 2/2] Support Out-Of-Tree Valgrind Tests

From
greened@obbligato.org <greened@obbligato.org>
Date
Mar 4, 2012, 23:23 UTC
Message-ID
<1330903437-31386-2-git-send-email-greened@obbligato.org>
In-Reply-To
<1330903437-31386-1-git-send-email-greened@obbligato.org>
From: "David A. Greene" <greened@obbligato.org>

Allow tests that do not live in the top-level t/ directory to run under valgrind. This requires exporting a couple more variables to indicate where the git tools were built and where the valgrind support files live.

Prior to this chage the valgrind support files were hard-coded to be in a sibling directory to where the valgrind tests are run.

Also prior to this change the base git build was hard-coded to be exactly two directories up from where the valgrind tests are run.

Signed-off-by: David A. Greene <greened@obbligato.org>
---
 t/test-lib.sh          |   22 ++++++++++++++++++++--
 t/valgrind/valgrind.sh |    4 ++--
 2 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/t/test-lib.sh b/t/test-lib.sh
index cb3a0a2..0ebb3a8 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -56,6 +56,7 @@ unset $(perl -e '
 		PROVE
 		VALGRIND
                 BUILD_DIR
+                VALGRIND_TOOLS
 	));
 	my @vars = grep(/^GIT_/ && !/^GIT_($ok)/o, @env);
 	print join("\n", @vars);
@@ -917,6 +918,20 @@ then
        GIT_BUILD_DIR="$TEST_DIRECTORY"/..
 fi
 
+# GIT_VALGRIND_TOOLS is the location of tools like valgrind.sh.
+if test -z "$GIT_VALGRIND_TOOLS"
+then
+	# We allow tests to override this, in case they want to run tests
+	# outside of t/.
+ 
+        # For in-tree test scripts, this is in TEST_DIRECTORY/valgrind
+        # (t/valgrind), but a test script that lives outside t/ can
+        # set this variable to point at the right place so that it can
+        # find t/valgrind directory that house test helpers like
+        # valgrind.sh.
+       GIT_VALGRIND_TOOLS="$TEST_DIRECTORY"/valgrind
+fi
+
 if test -n "$valgrind"
 then
 	make_symlink () {
@@ -954,11 +969,11 @@ then
 		    test ! -d "$symlink_target" &&
 		    test "#!" != "$(head -c 2 < "$symlink_target")"
 		then
-			symlink_target=../valgrind.sh
+			symlink_target=${GIT_VALGRIND_TOOLS}/valgrind.sh
 		fi
 		case "$base" in
 		*.sh|*.perl)
-			symlink_target=../unprocessed-script
+			symlink_target=${GIT_VALGRIND_TOOLS}/unprocessed-script
 		esac
 		# create the link, or replace it if it is out of date
 		make_symlink "$symlink_target" "$GIT_VALGRIND/bin/$base" || exit
@@ -986,7 +1001,10 @@ then
 	IFS=$OLDIFS
 	PATH=$GIT_VALGRIND/bin:$PATH
 	GIT_EXEC_PATH=$GIT_VALGRIND/bin
+	# Make these available in valgrind.sh
+	export GIT_BUILD_DIR
 	export GIT_VALGRIND
+	export GIT_VALGRIND_TOOLS
 elif test -n "$GIT_TEST_INSTALLED" ; then
 	GIT_EXEC_PATH=$($GIT_TEST_INSTALLED/git --exec-path)  ||
 	error "Cannot run git from $GIT_TEST_INSTALLED."
diff --git a/t/valgrind/valgrind.sh b/t/valgrind/valgrind.sh
index 582b4dc..d638d10 100755
--- a/t/valgrind/valgrind.sh
+++ b/t/valgrind/valgrind.sh
@@ -13,10 +13,10 @@ TRACK_ORIGINS=--track-origins=yes
 
 exec valgrind -q --error-exitcode=126 \
 	--leak-check=no \
-	--suppressions="$GIT_VALGRIND/default.supp" \
+	--suppressions="$GIT_VALGRIND_TOOLS/default.supp" \
 	--gen-suppressions=all \
 	$TRACK_ORIGINS \
 	--log-fd=4 \
 	--input-fd=4 \
 	$GIT_VALGRIND_OPTIONS \
-	"$GIT_VALGRIND"/../../"$base" "$@"
+	"$GIT_BUILD_DIR"/"$base" "$@"
-- 
1.7.9.1
Previous: greened@obbligato.orgNext: Thomas Rast
Message 2 of 18 in “Allow Overriding GIT_BUILD_DIR”
  1. 1/2 Allow Overriding GIT_BUILD_DIRgreened@obbligato.org, Mar 4, 2012
  2. 2/2 Support Out-Of-Tree Valgrind Testsgreened@obbligato.org, Mar 4, 2012
  3. Thomas RastMar 5, 2012
  4. David A. GreeneMar 5, 2012
  5. Thomas RastMar 6, 2012
  6. David A. GreeneMar 6, 2012
  7. Junio C HamanoMar 6, 2012
  8. David A. GreeneMar 6, 2012
  9. Junio C HamanoMar 6, 2012
  10. Junio C HamanoMar 6, 2012
  11. David A. GreeneMar 6, 2012
  12. Junio C HamanoMar 6, 2012
  13. David A. GreeneMar 6, 2012
  14. Junio C HamanoMar 6, 2012
  15. Junio C HamanoMar 5, 2012
  16. David A. GreeneMar 5, 2012
  17. Junio C HamanoMar 5, 2012
  18. David A. GreeneMar 6, 2012

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.