mirror of
https://github.com/git/git.git
synced 2024-11-24 18:33:43 +08:00
tests: parameterize --valgrind option
Running tests under helgrind and DRD recently proved useful in tracking down thread interaction issues. This can unfortunately not be done through GIT_VALGRIND_OPTIONS because any tool other than memcheck would complain about unknown options. Let --valgrind take an optional parameter that describes the valgrind tool to invoke. The default mode is to run memcheck as before. Signed-off-by: Thomas Rast <trast@inf.ethz.ch> Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
fd4fab894f
commit
952af3511c
15
t/README
15
t/README
@ -92,16 +92,21 @@ appropriately before running "make".
|
||||
This causes additional long-running tests to be run (where
|
||||
available), for more exhaustive testing.
|
||||
|
||||
--valgrind::
|
||||
Execute all Git binaries with valgrind and exit with status
|
||||
126 on errors (just like regular tests, this will only stop
|
||||
the test script when running under -i).
|
||||
--valgrind=<tool>::
|
||||
Execute all Git binaries under valgrind tool <tool> and exit
|
||||
with status 126 on errors (just like regular tests, this will
|
||||
only stop the test script when running under -i).
|
||||
|
||||
Since it makes no sense to run the tests with --valgrind and
|
||||
not see any output, this option implies --verbose. For
|
||||
convenience, it also implies --tee.
|
||||
|
||||
Note that valgrind is run with the option --leak-check=no,
|
||||
<tool> defaults to 'memcheck', just like valgrind itself.
|
||||
Other particularly useful choices include 'helgrind' and
|
||||
'drd', but you may use any tool recognized by your valgrind
|
||||
installation.
|
||||
|
||||
Note that memcheck is run with the option --leak-check=no,
|
||||
as the git process is short-lived and some errors are not
|
||||
interesting. In order to run a single command under the same
|
||||
conditions manually, you should set GIT_VALGRIND to point to
|
||||
|
@ -193,7 +193,11 @@ do
|
||||
--no-color)
|
||||
color=; shift ;;
|
||||
--va|--val|--valg|--valgr|--valgri|--valgrin|--valgrind)
|
||||
valgrind=t; verbose=t; shift ;;
|
||||
valgrind=memcheck
|
||||
shift ;;
|
||||
--valgrind=*)
|
||||
valgrind=$(expr "z$1" : 'z[^=]*=\(.*\)')
|
||||
shift ;;
|
||||
--tee)
|
||||
shift ;; # was handled already
|
||||
--root=*)
|
||||
@ -204,6 +208,8 @@ do
|
||||
esac
|
||||
done
|
||||
|
||||
test -n "$valgrind" && verbose=t
|
||||
|
||||
if test -n "$color"
|
||||
then
|
||||
say_color () {
|
||||
@ -530,6 +536,8 @@ then
|
||||
PATH=$GIT_VALGRIND/bin:$PATH
|
||||
GIT_EXEC_PATH=$GIT_VALGRIND/bin
|
||||
export GIT_VALGRIND
|
||||
GIT_VALGRIND_MODE="$valgrind"
|
||||
export GIT_VALGRIND_MODE
|
||||
elif test -n "$GIT_TEST_INSTALLED"
|
||||
then
|
||||
GIT_EXEC_PATH=$($GIT_TEST_INSTALLED/git --exec-path) ||
|
||||
|
@ -2,20 +2,25 @@
|
||||
|
||||
base=$(basename "$0")
|
||||
|
||||
TRACK_ORIGINS=
|
||||
TOOL_OPTIONS='--leak-check=no'
|
||||
|
||||
VALGRIND_VERSION=$(valgrind --version)
|
||||
VALGRIND_MAJOR=$(expr "$VALGRIND_VERSION" : '[^0-9]*\([0-9]*\)')
|
||||
VALGRIND_MINOR=$(expr "$VALGRIND_VERSION" : '[^0-9]*[0-9]*\.\([0-9]*\)')
|
||||
test 3 -gt "$VALGRIND_MAJOR" ||
|
||||
test 3 -eq "$VALGRIND_MAJOR" -a 4 -gt "$VALGRIND_MINOR" ||
|
||||
TRACK_ORIGINS=--track-origins=yes
|
||||
case "$GIT_VALGRIND_MODE" in
|
||||
memcheck)
|
||||
VALGRIND_VERSION=$(valgrind --version)
|
||||
VALGRIND_MAJOR=$(expr "$VALGRIND_VERSION" : '[^0-9]*\([0-9]*\)')
|
||||
VALGRIND_MINOR=$(expr "$VALGRIND_VERSION" : '[^0-9]*[0-9]*\.\([0-9]*\)')
|
||||
test 3 -gt "$VALGRIND_MAJOR" ||
|
||||
test 3 -eq "$VALGRIND_MAJOR" -a 4 -gt "$VALGRIND_MINOR" ||
|
||||
TOOL_OPTIONS="$TOOL_OPTIONS --track-origins=yes"
|
||||
;;
|
||||
*)
|
||||
TOOL_OPTIONS="--tool=$GIT_VALGRIND_MODE"
|
||||
esac
|
||||
|
||||
exec valgrind -q --error-exitcode=126 \
|
||||
--leak-check=no \
|
||||
--suppressions="$GIT_VALGRIND/default.supp" \
|
||||
--gen-suppressions=all \
|
||||
$TRACK_ORIGINS \
|
||||
--suppressions="$GIT_VALGRIND/default.supp" \
|
||||
$TOOL_OPTIONS \
|
||||
--log-fd=4 \
|
||||
--input-fd=4 \
|
||||
$GIT_VALGRIND_OPTIONS \
|
||||
|
Loading…
Reference in New Issue
Block a user