mirror of
https://github.com/git/git
synced 2024-11-05 18:59:29 +00:00
test-lib-functions: keep user's debugger config files and TERM in 'debug'
The 'debug' function in test-lib-functions.sh is used to invoke a debugger at a specific line in a test. It inherits the value of HOME and TERM set by 'test-lib.sh': HOME="$TRASH_DIRECTORY" and TERM=dumb. Changing the value of HOME means that any customization configured in a developers' debugger configuration file (like $HOME/.gdbinit or $HOME/.lldbinit) are not available in the debugger invoked by 'test_pause'. Changing the value of TERM to 'dumb' means that colored output is disabled in the debugger. To make the debugging experience with 'debug' more pleasant, leverage the variable USER_HOME, added in the previous commit, to copy a developer's ~/.gdbinit and ~/.lldbinit to the test HOME. We do not set HOME to USER_HOME as in 'test_pause' to avoid user configuration in $USER_HOME/.gitconfig from interfering with the command being debugged. Also, add a flag to launch the debugger with the original value of TERM, and add the same warning as for 'test_pause'. Helped-by: Carlo Marcelo Arenas Belón <carenas@gmail.com> Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com> Acked-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
add5240fa5
commit
01c381037c
2 changed files with 50 additions and 16 deletions
6
t/README
6
t/README
|
@ -800,10 +800,12 @@ see test-lib-functions.sh for the full list and their options.
|
|||
argument. This is primarily meant for use during the
|
||||
development of a new test script.
|
||||
|
||||
- debug <git-command>
|
||||
- debug [options] <git-command>
|
||||
|
||||
Run a git command inside a debugger. This is primarily meant for
|
||||
use when debugging a failing test script.
|
||||
use when debugging a failing test script. With '-t', use your
|
||||
original TERM instead of test-lib.sh's "dumb", so that your
|
||||
debugger interface has colors.
|
||||
|
||||
- test_done
|
||||
|
||||
|
|
|
@ -190,25 +190,57 @@ test_pause () {
|
|||
# Wrap git with a debugger. Adding this to a command can make it easier
|
||||
# to understand what is going on in a failing test.
|
||||
#
|
||||
# Usage: debug [options] <git command>
|
||||
# -d <debugger>
|
||||
# --debugger=<debugger>
|
||||
# Use <debugger> instead of GDB
|
||||
# -t
|
||||
# Use your original TERM instead of test-lib.sh's "dumb".
|
||||
# This usually restores color output in the debugger.
|
||||
# WARNING: the command being debugged might behave differently than when
|
||||
# running the test.
|
||||
#
|
||||
# Examples:
|
||||
# debug git checkout master
|
||||
# debug --debugger=nemiver git $ARGS
|
||||
# debug -d "valgrind --tool=memcheck --track-origins=yes" git $ARGS
|
||||
debug () {
|
||||
GIT_DEBUGGER=1 &&
|
||||
DEBUG_TERM=$TERM &&
|
||||
while test $# != 0
|
||||
do
|
||||
case "$1" in
|
||||
-t)
|
||||
DEBUG_TERM="$USER_TERM"
|
||||
;;
|
||||
-d)
|
||||
GIT_DEBUGGER="$2" &&
|
||||
shift 2
|
||||
shift
|
||||
;;
|
||||
--debugger=*)
|
||||
GIT_DEBUGGER="${1#*=}" &&
|
||||
shift 1
|
||||
GIT_DEBUGGER="${1#*=}"
|
||||
;;
|
||||
*)
|
||||
GIT_DEBUGGER=1
|
||||
break
|
||||
;;
|
||||
esac &&
|
||||
GIT_DEBUGGER="${GIT_DEBUGGER}" "$@" <&6 >&5 2>&7
|
||||
esac
|
||||
shift
|
||||
done &&
|
||||
|
||||
dotfiles=".gdbinit .lldbinit"
|
||||
|
||||
for dotfile in $dotfiles
|
||||
do
|
||||
dotfile="$USER_HOME/$dotfile" &&
|
||||
test -f "$dotfile" && cp "$dotfile" "$HOME" || :
|
||||
done &&
|
||||
|
||||
TERM="$DEBUG_TERM" GIT_DEBUGGER="${GIT_DEBUGGER}" "$@" <&6 >&5 2>&7 &&
|
||||
|
||||
for dotfile in $dotfiles
|
||||
do
|
||||
rm -f "$HOME/$dotfile"
|
||||
done
|
||||
}
|
||||
|
||||
# Usage: test_commit [options] <message> [<file> [<contents> [<tag>]]]
|
||||
|
|
Loading…
Reference in a new issue