Browse Source

mergetool: Add a test for running mergetool in a sub-directory

Signed-off-by: Charles Bailey <charles@hashpling.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Charles Bailey 16 years ago committed by Junio C Hamano
parent
commit
b9b5078ece
  1. 70
      t/t7610-mergetool.sh

70
t/t7610-mergetool.sh

@ -9,49 +9,81 @@ Testing basic merge tool invocation'


. ./test-lib.sh . ./test-lib.sh


# All the mergetool test work by checking out a temporary branch based
# off 'branch1' and then merging in master and checking the results of
# running mergetool

test_expect_success 'setup' ' test_expect_success 'setup' '
echo master >file1 && echo master >file1 &&
git add file1 && mkdir subdir &&
echo master sub >subdir/file3 &&
git add file1 subdir/file3 &&
git commit -m "added file1" && git commit -m "added file1" &&

git checkout -b branch1 master && git checkout -b branch1 master &&
echo branch1 change >file1 && echo branch1 change >file1 &&
echo branch1 newfile >file2 && echo branch1 newfile >file2 &&
git add file1 file2 && echo branch1 sub >subdir/file3 &&
git add file1 file2 subdir/file3 &&
git commit -m "branch1 changes" && git commit -m "branch1 changes" &&
git checkout -b branch2 master &&
echo branch2 change >file1 &&
echo branch2 newfile >file2 &&
git add file1 file2 &&
git commit -m "branch2 changes" &&
git checkout master && git checkout master &&
echo master updated >file1 && echo master updated >file1 &&
echo master new >file2 && echo master new >file2 &&
git add file1 file2 && echo master new sub >subdir/file3 &&
git commit -m "master updates" git add file1 file2 subdir/file3 &&
' git commit -m "master updates" &&


test_expect_success 'custom mergetool' '
git config merge.tool mytool && git config merge.tool mytool &&
git config mergetool.mytool.cmd "cat \"\$REMOTE\" >\"\$MERGED\"" && git config mergetool.mytool.cmd "cat \"\$REMOTE\" >\"\$MERGED\"" &&
git config mergetool.mytool.trustExitCode true && git config mergetool.mytool.trustExitCode true
git checkout branch1 && '

test_expect_success 'custom mergetool' '
git checkout -b test1 branch1 &&
test_must_fail git merge master >/dev/null 2>&1 && test_must_fail git merge master >/dev/null 2>&1 &&
( yes "" | git mergetool file1>/dev/null 2>&1 ) && ( yes "" | git mergetool file1 >/dev/null 2>&1 ) &&
( yes "" | git mergetool file2>/dev/null 2>&1 ) && ( yes "" | git mergetool file2 >/dev/null 2>&1 ) &&
( yes "" | git mergetool subdir/file3 >/dev/null 2>&1 ) &&
test "$(cat file1)" = "master updated" && test "$(cat file1)" = "master updated" &&
test "$(cat file2)" = "master new" && test "$(cat file2)" = "master new" &&
test "$(cat subdir/file3)" = "master new sub" &&
git commit -m "branch1 resolved with mergetool" git commit -m "branch1 resolved with mergetool"
' '


test_expect_success 'mergetool crlf' ' test_expect_success 'mergetool crlf' '
git config core.autocrlf true && git config core.autocrlf true &&
git reset --hard HEAD^ git checkout -b test2 branch1
test_must_fail git merge master >/dev/null 2>&1 && test_must_fail git merge master >/dev/null 2>&1 &&
( yes "" | git mergetool file1>/dev/null 2>&1 ) && ( yes "" | git mergetool file1 >/dev/null 2>&1 ) &&
( yes "" | git mergetool file2>/dev/null 2>&1 ) && ( yes "" | git mergetool file2 >/dev/null 2>&1 ) &&
( yes "" | git mergetool subdir/file3 >/dev/null 2>&1 ) &&
test "$(printf x | cat file1 -)" = "$(printf "master updated\r\nx")" && test "$(printf x | cat file1 -)" = "$(printf "master updated\r\nx")" &&
test "$(printf x | cat file2 -)" = "$(printf "master new\r\nx")" && test "$(printf x | cat file2 -)" = "$(printf "master new\r\nx")" &&
git commit -m "branch1 resolved with mergetool - autocrlf" test "$(printf x | cat subdir/file3 -)" = "$(printf "master new sub\r\nx")" &&
git commit -m "branch1 resolved with mergetool - autocrlf" &&
git config core.autocrlf false &&
git reset --hard
'

test_expect_failure 'mergetool in subdir' '
git checkout -b test3 branch1
cd subdir && (
test_must_fail git merge master >/dev/null 2>&1 &&
( yes "" | git mergetool file3 >/dev/null 2>&1 ) &&
test "$(cat file3)" = "master new sub" )
' '


# We can't merge files from parent directories when running mergetool
# from a subdir. Is this a bug?
#
#test_expect_failure 'mergetool in subdir' '
# cd subdir && (
# ( yes "" | git mergetool ../file1 >/dev/null 2>&1 ) &&
# ( yes "" | git mergetool ../file2 >/dev/null 2>&1 ) &&
# test "$(cat ../file1)" = "master updated" &&
# test "$(cat ../file2)" = "master new" &&
# git commit -m "branch1 resolved with mergetool - subdir" )
#'

test_done test_done

Loading…
Cancel
Save