diff options
Diffstat (limited to 't/t4057-diff-combined-paths.sh')
| -rwxr-xr-x | t/t4057-diff-combined-paths.sh | 106 | 
1 files changed, 106 insertions, 0 deletions
diff --git a/t/t4057-diff-combined-paths.sh b/t/t4057-diff-combined-paths.sh new file mode 100755 index 0000000000..dff36b77ec --- /dev/null +++ b/t/t4057-diff-combined-paths.sh @@ -0,0 +1,106 @@ +#!/bin/sh + +test_description='combined diff show only paths that are different to all parents' + +. ./test-lib.sh + +# verify that diffc.expect matches output of +# $(git diff -c --name-only HEAD HEAD^ HEAD^2) +diffc_verify () { +	git diff -c --name-only HEAD HEAD^ HEAD^2 >diffc.actual && +	test_cmp diffc.expect diffc.actual +} + +test_expect_success 'trivial merge - combine-diff empty' ' +	for i in $(test_seq 1 9) +	do +		echo $i >$i.txt	&& +		git add $i.txt +	done && +	git commit -m "init" && +	git checkout -b side && +	for i in $(test_seq 2 9) +	do +		echo $i/2 >>$i.txt +	done && +	git commit -a -m "side 2-9" && +	git checkout master && +	echo 1/2 >1.txt && +	git commit -a -m "master 1" && +	git merge side && +	>diffc.expect && +	diffc_verify +' + + +test_expect_success 'only one trully conflicting path' ' +	git checkout side && +	for i in $(test_seq 2 9) +	do +		echo $i/3 >>$i.txt +	done && +	echo "4side" >>4.txt && +	git commit -a -m "side 2-9 +4" && +	git checkout master && +	for i in $(test_seq 1 9) +	do +		echo $i/3 >>$i.txt +	done && +	echo "4master" >>4.txt && +	git commit -a -m "master 1-9 +4" && +	test_must_fail git merge side && +	cat <<-\EOF >4.txt && +	4 +	4/2 +	4/3 +	4master +	4side +	EOF +	git add 4.txt && +	git commit -m "merge side (2)" && +	echo 4.txt >diffc.expect && +	diffc_verify +' + +test_expect_success 'merge introduces new file' ' +	git checkout side && +	for i in $(test_seq 5 9) +	do +		echo $i/4 >>$i.txt +	done && +	git commit -a -m "side 5-9" && +	git checkout master && +	for i in $(test_seq 1 3) +	do +		echo $i/4 >>$i.txt +	done && +	git commit -a -m "master 1-3 +4hello" && +	git merge side && +	echo "Hello World" >4hello.txt && +	git add 4hello.txt && +	git commit --amend && +	echo 4hello.txt >diffc.expect && +	diffc_verify +' + +test_expect_success 'merge removed a file' ' +	git checkout side && +	for i in $(test_seq 5 9) +	do +		echo $i/5 >>$i.txt +	done && +	git commit -a -m "side 5-9" && +	git checkout master && +	for i in $(test_seq 1 3) +	do +		echo $i/4 >>$i.txt +	done && +	git commit -a -m "master 1-3" && +	git merge side && +	git rm 4.txt && +	git commit --amend && +	echo 4.txt >diffc.expect && +	diffc_verify +' + +test_done  | 
