difftool: honor --trust-exit-code for builtin tools
run_merge_tool() was not setting $status, which prevented the exit code for builtin tools from being forwarded to the caller. Capture the exit status and add a test to guarantee the behavior. Reported-by: Adria Farres <14farresa@gmail.com> Signed-off-by: David Aguilar <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
David Aguilar committed
Nov 14, 2014 at 13:33 UTC
99474b6340dbcbe58f6c256fdee231cbadb060f4
2 files changed
+6
git-mergetool--lib.sh
+1
@@ -221,6 +221,7 @@ run_merge_tool () {
221
else
222
run_diff_cmd "$1"
223
fi
224
+ status=$?
225
return $status
226
}
227
t/t7800-difftool.sh
+5
@@ -86,6 +86,11 @@ test_expect_success PERL 'difftool forwards exit code with --trust-exit-code' '
86
test_must_fail git difftool -y --trust-exit-code -t error branch
87
'
88
89
+test_expect_success PERL 'difftool forwards exit code with --trust-exit-code for built-ins' '
90
+ test_config difftool.vimdiff.path false &&
91
+ test_must_fail git difftool -y --trust-exit-code -t vimdiff branch
92
+'
93
+
94
test_expect_success PERL 'difftool honors difftool.trustExitCode = true' '
95
test_config difftool.error.cmd false &&
96
test_config difftool.trustExitCode true &&