Git development
 help / color / mirror / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Jeff King <peff@peff.net>
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: [INTERDIFF of PATCH 1/2 v2] Add valgrind support in test scripts
Date: Wed, 21 Jan 2009 02:11:37 +0100 (CET)	[thread overview]
Message-ID: <alpine.DEB.1.00.0901210211060.19014@racer> (raw)
In-Reply-To: <alpine.DEB.1.00.0901210209580.19014@racer>


 t/README               |    6 +++++-
 t/test-lib.sh          |   32 +++++++++++++++++++++-----------
 t/valgrind/.gitignore  |    3 +--
 t/valgrind/valgrind.sh |    4 ++--
 4 files changed, 29 insertions(+), 16 deletions(-)

diff --git a/t/README b/t/README
index 8f12d48..0cee429 100644
--- a/t/README
+++ b/t/README
@@ -39,7 +39,8 @@ this:
     * passed all 3 test(s)
 
 You can pass --verbose (or -v), --debug (or -d), and --immediate
-(or -i) command line argument to the test.
+(or -i) command line argument to the test, or by setting GIT_TEST_OPTS
+appropriately before running "make".
 
 --verbose::
 	This makes the test more verbose.  Specifically, the
@@ -58,6 +59,9 @@ You can pass --verbose (or -v), --debug (or -d), and --immediate
 	This causes additional long-running tests to be run (where
 	available), for more exhaustive testing.
 
+--valgrind::
+	Execute all Git binaries with valgrind and stop on errors (the
+	exit code will be 126).
 
 Skipping Tests
 --------------
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 6bd893d..f031905 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -488,27 +488,37 @@ then
 	GIT_EXEC_PATH=$TEST_DIRECTORY/..
 else
 	# override all git executables in PATH and TEST_DIRECTORY/..
-	GIT_VALGRIND=$TEST_DIRECTORY/valgrind
+	GIT_VALGRIND=$TEST_DIRECTORY/valgrind/bin
 	mkdir -p "$GIT_VALGRIND"
 	OLDIFS=$IFS
 	IFS=:
-	for path in $PATH:$TEST_DIRECTORY/..
+	for path in $PATH $TEST_DIRECTORY/..
 	do
-		ls "$TEST_DIRECTORY"/../git "$path"/git-* 2> /dev/null |
+		ls "$path"/git "$path"/git-* 2> /dev/null |
 		while read file
 		do
 			# handle only executables
-			test -x "$file" || continue
+			test -x "$file" && test ! -d "$file" || continue
 
 			base=$(basename "$file")
-			test ! -h "$GIT_VALGRIND"/"$base" || continue
-
-			if test "#!" = "$(head -c 2 < "$file")"
+			symlink_target=$TEST_DIRECTORY/../$base
+			# do not override scripts
+			if test -x "$symlink_target" &&
+			    test "#!" != "$(head -c 2 < "$symlink_target")"
+			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
+			if test ! -h "$GIT_VALGRIND"/"$base" ||
+			    test "$symlink_target" != \
+					"$(readlink "$GIT_VALGRIND"/"$base")"
 			then
-				# do not override scripts
-				ln -s ../../"$base" "$GIT_VALGRIND"/"$base"
-			else
-				ln -s valgrind.sh "$GIT_VALGRIND"/"$base"
+				rm -f "$GIT_VALGRIND"/"$base" || exit
+				ln -s "$symlink_target" "$GIT_VALGRIND"/"$base"
 			fi
 		done
 	done
diff --git a/t/valgrind/.gitignore b/t/valgrind/.gitignore
index d781a63..ae3c172 100644
--- a/t/valgrind/.gitignore
+++ b/t/valgrind/.gitignore
@@ -1,2 +1 @@
-/git
-/git-*
+/bin/
diff --git a/t/valgrind/valgrind.sh b/t/valgrind/valgrind.sh
index 24f3a4e..2c4b54b 100755
--- a/t/valgrind/valgrind.sh
+++ b/t/valgrind/valgrind.sh
@@ -4,9 +4,9 @@ base=$(basename "$0")
 
 exec valgrind -q --error-exitcode=126 \
 	--leak-check=no \
-	--suppressions="$GIT_VALGRIND/default.supp" \
+	--suppressions="$GIT_VALGRIND/../default.supp" \
 	--gen-suppressions=all \
 	--log-fd=4 \
 	--input-fd=4 \
 	$GIT_VALGRIND_OPTIONS \
-	"$GIT_VALGRIND"/../../"$base" "$@"
+	"$GIT_VALGRIND"/../../../"$base" "$@"

  reply	other threads:[~2009-01-21  1:12 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-19  9:13 What's cooking in git.git (Jan 2009, #04; Mon, 19) Junio C Hamano
2009-01-19 11:54 ` Kjetil Barvik
2009-01-19 13:09   ` Johannes Schindelin
2009-01-19 13:08 ` Johannes Schindelin
2009-01-20  4:44   ` Jeff King
2009-01-20 13:51     ` valgrind patches, was " Johannes Schindelin
2009-01-20 14:19       ` Jeff King
2009-01-20 14:50         ` Johannes Schindelin
2009-01-20 15:04           ` [PATCH 1/2] Add valgrind support in test scripts Johannes Schindelin
2009-01-20 15:05             ` [PATCH 2/2] valgrind: ignore ldso errors Johannes Schindelin
2009-01-21  0:12             ` [PATCH 1/2] Add valgrind support in test scripts Jeff King
2009-01-21  0:41               ` Johannes Schindelin
2009-01-21  1:10               ` [PATCH 1/2 v2] " Johannes Schindelin
2009-01-21  1:11                 ` Johannes Schindelin [this message]
2009-01-21  8:48                 ` Junio C Hamano
2009-01-21 12:21                   ` Johannes Schindelin
2009-01-21 19:02                 ` Jeff King
2009-01-21 20:49                   ` Johannes Schindelin
2009-01-21 21:53                     ` Jeff King
2009-01-21 22:38                       ` Johannes Schindelin
2009-01-25 23:18                         ` [PATCH 0/3] Valgrind support Johannes Schindelin
2009-01-25 23:18                           ` [PATCH v3 1/3] Add valgrind support in test scripts Johannes Schindelin
2009-01-25 23:29                             ` Jeff King
2009-01-25 23:35                               ` Johannes Schindelin
2009-01-25 23:42                                 ` Jeff King
2009-01-25 23:19                           ` [PATCH v3 2/3] valgrind: ignore ldso and more libz errors Johannes Schindelin
2009-01-25 23:32                             ` Jeff King
2009-01-26  0:02                               ` Johannes Schindelin
2009-01-26  0:14                                 ` Jeff King
2009-01-25 23:20                           ` [PATCH 3/3] Valgrind support: check for more than just programming errors Johannes Schindelin
2009-01-25 23:42                             ` Jeff King
2009-01-26  0:43                               ` Johannes Schindelin
2009-01-21 22:31                     ` [PATCH] valgrind tests: be super-super paranoid when creating symlinks Johannes Schindelin
2009-01-20 23:24           ` valgrind patches, was Re: What's cooking in git.git (Jan 2009, #04; Mon, 19) Jeff King
2009-01-21  0:10             ` Johannes Schindelin
2009-01-21  0:15               ` Jeff King
2009-01-21  0:28                 ` Johannes Schindelin
2009-01-21  0:37                   ` Jeff King
2009-01-21  1:26                     ` Johannes Schindelin
2009-01-21  1:36                       ` [PATCH 2/2 v2] valgrind: ignore ldso errors Johannes Schindelin
2009-01-21 19:09                         ` Jeff King
2009-01-21 20:51                           ` Johannes Schindelin
2009-01-21 19:07                       ` valgrind patches, was Re: What's cooking in git.git (Jan 2009, #04; Mon, 19) Jeff King
2009-01-21 22:17                         ` Johannes Schindelin
2009-01-21 23:57                           ` Jeff King
2009-01-22  0:42                           ` Junio C Hamano
2009-01-22  0:59                             ` Jeff King
2009-01-22  5:02                               ` Johannes Schindelin
2009-01-22  5:39                                 ` Jeff King
2009-01-27  2:50                           ` Valgrind updates Johannes Schindelin
2009-01-27  3:38                             ` Linus Torvalds
2009-01-27  4:26                               ` Johannes Schindelin
2009-01-27  4:46                                 ` Johannes Schindelin
2009-01-27 13:14                                 ` Mark Brown
2009-01-27 16:54                                   ` Johannes Schindelin
2009-01-27 18:55                                     ` Linus Torvalds
2009-01-27 21:52                                       ` Johannes Schindelin
2009-01-29  1:56                                         ` Linus Torvalds
2009-01-29 14:22                                           ` Johannes Schindelin
2009-01-28 23:06                                       ` Mark Adler
2009-01-28 23:27                                         ` Johannes Schindelin
2009-01-29  0:15                                           ` Mark Adler
2009-01-29 14:14                                             ` Johannes Schindelin
2009-01-29 14:54                                               ` Johannes Schindelin
2009-01-27  4:48                               ` Jeff King
2009-01-27  9:31                                 ` Johannes Schindelin
2009-01-20  4:30 ` What's cooking in git.git (Jan 2009, #04; Mon, 19) Jeff King
2009-01-20  4:40 ` Jeff King
2009-01-20  7:04   ` Junio C Hamano
2009-01-20  7:55   ` Johannes Sixt
2009-01-20 14:18     ` Jeff King
2009-01-20  5:17 ` Boyd Stephen Smith Jr.
2009-01-20  8:57   ` Thomas Rast

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.DEB.1.00.0901210211060.19014@racer \
    --to=johannes.schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox