Silence error messages when "git checkout-index" is used to checkout a stage that does not exist. This can happen now that mergetool calls checkout_staged_file() unconditionally when creating the temporary $BASE, $LOCAL, and $REMOTE files. Fix the test so that it checks the contents of the "both added" file. The test was passing as a consequence of accidentally handing a bad path to "cat". Signed-off-by: David Aguilar <davvid@xxxxxxxxx> --- This applies on top of da/maint-mergetool-twoway in pu. git-mergetool.sh | 4 +++- t/t7610-mergetool.sh | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/git-mergetool.sh b/git-mergetool.sh index 24bedc5..a9f23f7 100755 --- a/git-mergetool.sh +++ b/git-mergetool.sh @@ -181,7 +181,9 @@ stage_submodule () { } checkout_staged_file () { - tmpfile=$(expr "$(git checkout-index --temp --stage="$1" "$2")" : '\([^ ]*\) ') + tmpfile=$(expr \ + "$(git checkout-index --temp --stage="$1" "$2" 2>/dev/null)" \ + : '\([^ ]*\) ') if test $? -eq 0 -a -n "$tmpfile" ; then mv -- "$(git rev-parse --show-cdup)$tmpfile" "$3" diff --git a/t/t7610-mergetool.sh b/t/t7610-mergetool.sh index 2272743..3f261a3 100755 --- a/t/t7610-mergetool.sh +++ b/t/t7610-mergetool.sh @@ -465,8 +465,9 @@ test_expect_success 'directory vs modified submodule' ' test_expect_success 'file with no base' ' git checkout -b test13 branch1 && test_must_fail git merge master && - git mergetool --no-prompt --tool mybase -- base && - test "$(cat "$MERGED")" = "" && + git mergetool --no-prompt --tool mybase -- both && + >expected && + test_cmp both expected && git reset --hard master >/dev/null 2>&1 ' -- 1.7.7.166.g1cd0c -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html