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 &&