Skip to content

Commit

Permalink
mergetool: Add a test for running mergetool in a sub-directory
Browse files Browse the repository at this point in the history
Signed-off-by: Charles Bailey <charles@hashpling.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
hashpling authored and gitster committed Jan 31, 2009
1 parent 0ec7b6c commit b9b5078
Showing 1 changed file with 51 additions and 19 deletions.
70 changes: 51 additions & 19 deletions t/t7610-mergetool.sh
Expand Up @@ -9,49 +9,81 @@ Testing basic merge tool invocation'

. ./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' '
echo master >file1 &&
git add file1 &&
mkdir subdir &&
echo master sub >subdir/file3 &&
git add file1 subdir/file3 &&
git commit -m "added file1" &&
git checkout -b branch1 master &&
echo branch1 change >file1 &&
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 checkout -b branch2 master &&
echo branch2 change >file1 &&
echo branch2 newfile >file2 &&
git add file1 file2 &&
git commit -m "branch2 changes" &&
git checkout master &&
echo master updated >file1 &&
echo master new >file2 &&
git add file1 file2 &&
git commit -m "master updates"
'
echo master new sub >subdir/file3 &&
git add file1 file2 subdir/file3 &&
git commit -m "master updates" &&
test_expect_success 'custom mergetool' '
git config merge.tool mytool &&
git config mergetool.mytool.cmd "cat \"\$REMOTE\" >\"\$MERGED\"" &&
git config mergetool.mytool.trustExitCode true &&
git checkout branch1 &&
git config mergetool.mytool.trustExitCode true
'

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

test_expect_success 'mergetool crlf' '
git config core.autocrlf true &&
git reset --hard HEAD^
git checkout -b test2 branch1
test_must_fail git merge master >/dev/null 2>&1 &&
( yes "" | git mergetool file1>/dev/null 2>&1 ) &&
( yes "" | git mergetool file2>/dev/null 2>&1 ) &&
( yes "" | git mergetool file1 >/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 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

0 comments on commit b9b5078

Please sign in to comment.