Merge branch 'tr/valgrind'
Let us use not just memgrind but other *grind debuggers. * tr/valgrind: tests: notice valgrind error in test_must_fail tests --valgrind: provide a mode without --track-origins tests: parameterize --valgrind option t/README: --valgrind already implies -v
This commit is contained in:
commit
d3ea5826e4
21
t/README
21
t/README
@ -92,17 +92,26 @@ appropriately before running "make".
|
|||||||
This causes additional long-running tests to be run (where
|
This causes additional long-running tests to be run (where
|
||||||
available), for more exhaustive testing.
|
available), for more exhaustive testing.
|
||||||
|
|
||||||
--valgrind::
|
--valgrind=<tool>::
|
||||||
Execute all Git binaries with valgrind and exit with status
|
Execute all Git binaries under valgrind tool <tool> and exit
|
||||||
126 on errors (just like regular tests, this will only stop
|
with status 126 on errors (just like regular tests, this will
|
||||||
the test script when running under -i). Valgrind errors
|
only stop the test script when running under -i).
|
||||||
go to stderr, so you might want to pass the -v option, too.
|
|
||||||
|
|
||||||
Since it makes no sense to run the tests with --valgrind and
|
Since it makes no sense to run the tests with --valgrind and
|
||||||
not see any output, this option implies --verbose. For
|
not see any output, this option implies --verbose. For
|
||||||
convenience, it also implies --tee.
|
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.
|
||||||
|
|
||||||
|
As a special case, <tool> can be 'memcheck-fast', which uses
|
||||||
|
memcheck but disables --track-origins. Use this if you are
|
||||||
|
running tests in bulk, to see if there are _any_ memory
|
||||||
|
issues.
|
||||||
|
|
||||||
|
Note that memcheck is run with the option --leak-check=no,
|
||||||
as the git process is short-lived and some errors are not
|
as the git process is short-lived and some errors are not
|
||||||
interesting. In order to run a single command under the same
|
interesting. In order to run a single command under the same
|
||||||
conditions manually, you should set GIT_VALGRIND to point to
|
conditions manually, you should set GIT_VALGRIND to point to
|
||||||
|
@ -540,6 +540,9 @@ test_must_fail () {
|
|||||||
elif test $exit_code = 127; then
|
elif test $exit_code = 127; then
|
||||||
echo >&2 "test_must_fail: command not found: $*"
|
echo >&2 "test_must_fail: command not found: $*"
|
||||||
return 1
|
return 1
|
||||||
|
elif test $exit_code = 126; then
|
||||||
|
echo >&2 "test_must_fail: valgrind error: $*"
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
@ -193,7 +193,11 @@ do
|
|||||||
--no-color)
|
--no-color)
|
||||||
color=; shift ;;
|
color=; shift ;;
|
||||||
--va|--val|--valg|--valgr|--valgri|--valgrin|--valgrind)
|
--va|--val|--valg|--valgr|--valgri|--valgrin|--valgrind)
|
||||||
valgrind=t; verbose=t; shift ;;
|
valgrind=memcheck
|
||||||
|
shift ;;
|
||||||
|
--valgrind=*)
|
||||||
|
valgrind=$(expr "z$1" : 'z[^=]*=\(.*\)')
|
||||||
|
shift ;;
|
||||||
--tee)
|
--tee)
|
||||||
shift ;; # was handled already
|
shift ;; # was handled already
|
||||||
--root=*)
|
--root=*)
|
||||||
@ -204,6 +208,8 @@ do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
test -n "$valgrind" && verbose=t
|
||||||
|
|
||||||
if test -n "$color"
|
if test -n "$color"
|
||||||
then
|
then
|
||||||
say_color () {
|
say_color () {
|
||||||
@ -530,6 +536,8 @@ then
|
|||||||
PATH=$GIT_VALGRIND/bin:$PATH
|
PATH=$GIT_VALGRIND/bin:$PATH
|
||||||
GIT_EXEC_PATH=$GIT_VALGRIND/bin
|
GIT_EXEC_PATH=$GIT_VALGRIND/bin
|
||||||
export GIT_VALGRIND
|
export GIT_VALGRIND
|
||||||
|
GIT_VALGRIND_MODE="$valgrind"
|
||||||
|
export GIT_VALGRIND_MODE
|
||||||
elif test -n "$GIT_TEST_INSTALLED"
|
elif test -n "$GIT_TEST_INSTALLED"
|
||||||
then
|
then
|
||||||
GIT_EXEC_PATH=$($GIT_TEST_INSTALLED/git --exec-path) ||
|
GIT_EXEC_PATH=$($GIT_TEST_INSTALLED/git --exec-path) ||
|
||||||
|
@ -2,20 +2,27 @@
|
|||||||
|
|
||||||
base=$(basename "$0")
|
base=$(basename "$0")
|
||||||
|
|
||||||
TRACK_ORIGINS=
|
TOOL_OPTIONS='--leak-check=no'
|
||||||
|
|
||||||
VALGRIND_VERSION=$(valgrind --version)
|
case "$GIT_VALGRIND_MODE" in
|
||||||
VALGRIND_MAJOR=$(expr "$VALGRIND_VERSION" : '[^0-9]*\([0-9]*\)')
|
memcheck-fast)
|
||||||
VALGRIND_MINOR=$(expr "$VALGRIND_VERSION" : '[^0-9]*[0-9]*\.\([0-9]*\)')
|
;;
|
||||||
test 3 -gt "$VALGRIND_MAJOR" ||
|
memcheck)
|
||||||
test 3 -eq "$VALGRIND_MAJOR" -a 4 -gt "$VALGRIND_MINOR" ||
|
VALGRIND_VERSION=$(valgrind --version)
|
||||||
TRACK_ORIGINS=--track-origins=yes
|
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 \
|
exec valgrind -q --error-exitcode=126 \
|
||||||
--leak-check=no \
|
|
||||||
--suppressions="$GIT_VALGRIND/default.supp" \
|
|
||||||
--gen-suppressions=all \
|
--gen-suppressions=all \
|
||||||
$TRACK_ORIGINS \
|
--suppressions="$GIT_VALGRIND/default.supp" \
|
||||||
|
$TOOL_OPTIONS \
|
||||||
--log-fd=4 \
|
--log-fd=4 \
|
||||||
--input-fd=4 \
|
--input-fd=4 \
|
||||||
$GIT_VALGRIND_OPTIONS \
|
$GIT_VALGRIND_OPTIONS \
|
||||||
|
Loading…
Reference in New Issue
Block a user