Skip to content

Commit

Permalink
test: facilitate debugging Git executables in tests with gdb
Browse files Browse the repository at this point in the history
When prefixing a Git call in the test suite with 'debug ', it will
now be run with GDB, allowing the developer to debug test failures
more conveniently.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Johannes Schindelin authored and Junio C Hamano committed Oct 30, 2015
1 parent 80980a1 commit 6a94088
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 1 deletion.
5 changes: 5 additions & 0 deletions t/README
Original file line number Diff line number Diff line change
Expand Up @@ -563,6 +563,11 @@ library for your script to use.
argument. This is primarily meant for use during the
development of a new test script.

- debug <git-command>

Run a git command inside a debugger. This is primarily meant for
use when debugging a failing test script.

- test_done

Your test script must have test_done at the end. Its purpose
Expand Down
8 changes: 8 additions & 0 deletions t/test-lib-functions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,14 @@ test_pause () {
fi
}

# Wrap git in gdb. Adding this to a command can make it easier to
# understand what is going on in a failing test.
#
# Example: "debug git checkout master".
debug () {
GIT_TEST_GDB=1 "$@"
}

# Call test_commit with the arguments "<message> [<file> [<contents> [<tag>]]]"
#
# This will commit a file with the given contents and the given commit
Expand Down
8 changes: 7 additions & 1 deletion wrap-for-bin.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,10 @@ GIT_TEXTDOMAINDIR='@@BUILD_DIR@@/po/build/locale'
PATH='@@BUILD_DIR@@/bin-wrappers:'"$PATH"
export GIT_EXEC_PATH GITPERLLIB PATH GIT_TEXTDOMAINDIR

exec "${GIT_EXEC_PATH}/@@PROG@@" "$@"
if test -n "$GIT_TEST_GDB"
then
unset GIT_TEST_GDB
exec gdb --args "${GIT_EXEC_PATH}/@@PROG@@" "$@"
else
exec "${GIT_EXEC_PATH}/@@PROG@@" "$@"
fi

0 comments on commit 6a94088

Please sign in to comment.