Re: [PATCH v2] difftool: always honor fatal error exit codes
From: Junio C Hamano <hidden>
Date: 2016-08-15 22:26:56
John Keeping [off-list ref] writes:
Here's what that looks like.
Sounds good. It feels a bit funny to see that new mentions of $status are unquoted (which is totally valid because we know it has $? that cannot be anything other than a short decimal integer), while the one in the post-context quotes it, but that's not a huge issue. Will queue. Thanks.
quoted hunk
git-difftool--helper.sh | 7 +++++++ t/t7800-difftool.sh | 6 ++++++ 2 files changed, 13 insertions(+)diff --git a/git-difftool--helper.sh b/git-difftool--helper.sh index 84d6cc0..7bfb673 100755 --- a/git-difftool--helper.sh +++ b/git-difftool--helper.sh@@ -86,6 +86,13 @@ else do launch_merge_tool "$1" "$2" "$5" status=$? + if test $status -ge 126 + then + # Command not found (127), not executable (126) or + # exited via a signal (>= 128). + exit $status + fi + if test "$status" != 0 && test "$GIT_DIFFTOOL_TRUST_EXIT_CODE" = true thendiff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh index 2974900..70a2de4 100755 --- a/t/t7800-difftool.sh +++ b/t/t7800-difftool.sh@@ -124,6 +124,12 @@ test_expect_success PERL 'difftool stops on error with --trust-exit-code' ' test_cmp expect actual ' +test_expect_success PERL 'difftool honors exit status if command not found' ' + test_config difftool.nonexistent.cmd i-dont-exist && + test_config difftool.trustExitCode false && + test_must_fail git difftool -y -t nonexistent branch +' + test_expect_success PERL 'difftool honors --gui' ' difftool_test_setup && test_config merge.tool bogus-tool &&