 8f37854b18
			
		
	
	8f37854b18
	
	
	
		
			
			Carefully excluding t4013 and t4015, which see independent development elsewhere at the time of writing, we use `main` as the default branch name in t4*. This trick was performed via $ (cd t && sed -i -e 's/master/main/g' -e 's/MASTER/MAIN/g' \ -e 's/Master/Main/g' -- t4*.sh t4211/*.export && git checkout HEAD -- t4013\*) This allows us to define `GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main` for those tests. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			222 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			222 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| test_description='combined and merge diff handle binary files and textconv'
 | |
| GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 | |
| export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 | |
| 
 | |
| . ./test-lib.sh
 | |
| 
 | |
| test_expect_success 'setup binary merge conflict' '
 | |
| 	echo oneQ1 | q_to_nul >binary &&
 | |
| 	git add binary &&
 | |
| 	git commit -m one &&
 | |
| 	echo twoQ2 | q_to_nul >binary &&
 | |
| 	git commit -a -m two &&
 | |
| 	two=$(git rev-parse --short HEAD:binary) &&
 | |
| 	git checkout -b branch-binary HEAD^ &&
 | |
| 	echo threeQ3 | q_to_nul >binary &&
 | |
| 	git commit -a -m three &&
 | |
| 	three=$(git rev-parse --short HEAD:binary) &&
 | |
| 	test_must_fail git merge main &&
 | |
| 	echo resolvedQhooray | q_to_nul >binary &&
 | |
| 	git commit -a -m resolved &&
 | |
| 	res=$(git rev-parse --short HEAD:binary)
 | |
| '
 | |
| 
 | |
| cat >expect <<EOF
 | |
| resolved
 | |
| 
 | |
| diff --git a/binary b/binary
 | |
| index $three..$res 100644
 | |
| Binary files a/binary and b/binary differ
 | |
| resolved
 | |
| 
 | |
| diff --git a/binary b/binary
 | |
| index $two..$res 100644
 | |
| Binary files a/binary and b/binary differ
 | |
| EOF
 | |
| test_expect_success 'diff -m indicates binary-ness' '
 | |
| 	git show --format=%s -m >actual &&
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| cat >expect <<EOF
 | |
| resolved
 | |
| 
 | |
| diff --combined binary
 | |
| index $three,$two..$res
 | |
| Binary files differ
 | |
| EOF
 | |
| test_expect_success 'diff -c indicates binary-ness' '
 | |
| 	git show --format=%s -c >actual &&
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| cat >expect <<EOF
 | |
| resolved
 | |
| 
 | |
| diff --cc binary
 | |
| index $three,$two..$res
 | |
| Binary files differ
 | |
| EOF
 | |
| test_expect_success 'diff --cc indicates binary-ness' '
 | |
| 	git show --format=%s --cc >actual &&
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'setup non-binary with binary attribute' '
 | |
| 	git checkout main &&
 | |
| 	test_commit one text &&
 | |
| 	test_commit two text &&
 | |
| 	two=$(git rev-parse --short HEAD:text) &&
 | |
| 	git checkout -b branch-text HEAD^ &&
 | |
| 	test_commit three text &&
 | |
| 	three=$(git rev-parse --short HEAD:text) &&
 | |
| 	test_must_fail git merge main &&
 | |
| 	test_commit resolved text &&
 | |
| 	res=$(git rev-parse --short HEAD:text) &&
 | |
| 	echo text -diff >.gitattributes
 | |
| '
 | |
| 
 | |
| cat >expect <<EOF
 | |
| resolved
 | |
| 
 | |
| diff --git a/text b/text
 | |
| index $three..$res 100644
 | |
| Binary files a/text and b/text differ
 | |
| resolved
 | |
| 
 | |
| diff --git a/text b/text
 | |
| index $two..$res 100644
 | |
| Binary files a/text and b/text differ
 | |
| EOF
 | |
| test_expect_success 'diff -m respects binary attribute' '
 | |
| 	git show --format=%s -m >actual &&
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| cat >expect <<EOF
 | |
| resolved
 | |
| 
 | |
| diff --combined text
 | |
| index $three,$two..$res
 | |
| Binary files differ
 | |
| EOF
 | |
| test_expect_success 'diff -c respects binary attribute' '
 | |
| 	git show --format=%s -c >actual &&
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| cat >expect <<EOF
 | |
| resolved
 | |
| 
 | |
| diff --cc text
 | |
| index $three,$two..$res
 | |
| Binary files differ
 | |
| EOF
 | |
| test_expect_success 'diff --cc respects binary attribute' '
 | |
| 	git show --format=%s --cc >actual &&
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'setup textconv attribute' '
 | |
| 	echo "text diff=upcase" >.gitattributes &&
 | |
| 	git config diff.upcase.textconv "tr a-z A-Z <"
 | |
| '
 | |
| 
 | |
| cat >expect <<EOF
 | |
| resolved
 | |
| 
 | |
| diff --git a/text b/text
 | |
| index $three..$res 100644
 | |
| --- a/text
 | |
| +++ b/text
 | |
| @@ -1 +1 @@
 | |
| -THREE
 | |
| +RESOLVED
 | |
| resolved
 | |
| 
 | |
| diff --git a/text b/text
 | |
| index $two..$res 100644
 | |
| --- a/text
 | |
| +++ b/text
 | |
| @@ -1 +1 @@
 | |
| -TWO
 | |
| +RESOLVED
 | |
| EOF
 | |
| test_expect_success 'diff -m respects textconv attribute' '
 | |
| 	git show --format=%s -m >actual &&
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| cat >expect <<EOF
 | |
| resolved
 | |
| 
 | |
| diff --combined text
 | |
| index $three,$two..$res
 | |
| --- a/text
 | |
| +++ b/text
 | |
| @@@ -1,1 -1,1 +1,1 @@@
 | |
| - THREE
 | |
|  -TWO
 | |
| ++RESOLVED
 | |
| EOF
 | |
| test_expect_success 'diff -c respects textconv attribute' '
 | |
| 	git show --format=%s -c >actual &&
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| cat >expect <<EOF
 | |
| resolved
 | |
| 
 | |
| diff --cc text
 | |
| index $three,$two..$res
 | |
| --- a/text
 | |
| +++ b/text
 | |
| @@@ -1,1 -1,1 +1,1 @@@
 | |
| - THREE
 | |
|  -TWO
 | |
| ++RESOLVED
 | |
| EOF
 | |
| test_expect_success 'diff --cc respects textconv attribute' '
 | |
| 	git show --format=%s --cc >actual &&
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| cat >expect <<EOF
 | |
| diff --combined text
 | |
| index $three,$two..$res
 | |
| --- a/text
 | |
| +++ b/text
 | |
| @@@ -1,1 -1,1 +1,1 @@@
 | |
| - three
 | |
|  -two
 | |
| ++resolved
 | |
| EOF
 | |
| test_expect_success 'diff-tree plumbing does not respect textconv' '
 | |
| 	git diff-tree HEAD -c -p >full &&
 | |
| 	tail -n +2 full >actual &&
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| cat >expect <<EOF
 | |
| diff --cc text
 | |
| index $three,$two..0000000
 | |
| --- a/text
 | |
| +++ b/text
 | |
| @@@ -1,1 -1,1 +1,5 @@@
 | |
| ++<<<<<<< HEAD
 | |
|  +THREE
 | |
| ++=======
 | |
| + TWO
 | |
| ++>>>>>>> MAIN
 | |
| EOF
 | |
| test_expect_success 'diff --cc respects textconv on worktree file' '
 | |
| 	git reset --hard HEAD^ &&
 | |
| 	test_must_fail git merge main &&
 | |
| 	git diff >actual &&
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_done
 |