212 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
test_description='combined and merge diff handle binary files and textconv'
 | 
						|
. ./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 &&
 | 
						|
	git checkout -b branch-binary HEAD^ &&
 | 
						|
	echo threeQ3 | q_to_nul >binary &&
 | 
						|
	git commit -a -m three &&
 | 
						|
	test_must_fail git merge master &&
 | 
						|
	echo resolvedQhooray | q_to_nul >binary &&
 | 
						|
	git commit -a -m resolved
 | 
						|
'
 | 
						|
 | 
						|
cat >expect <<'EOF'
 | 
						|
resolved
 | 
						|
 | 
						|
diff --git a/binary b/binary
 | 
						|
index 7ea6ded..9563691 100644
 | 
						|
Binary files a/binary and b/binary differ
 | 
						|
resolved
 | 
						|
 | 
						|
diff --git a/binary b/binary
 | 
						|
index 6197570..9563691 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 7ea6ded,6197570..9563691
 | 
						|
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 7ea6ded,6197570..9563691
 | 
						|
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 master &&
 | 
						|
	test_commit one text &&
 | 
						|
	test_commit two text &&
 | 
						|
	git checkout -b branch-text HEAD^ &&
 | 
						|
	test_commit three text &&
 | 
						|
	test_must_fail git merge master &&
 | 
						|
	test_commit resolved text &&
 | 
						|
	echo text -diff >.gitattributes
 | 
						|
'
 | 
						|
 | 
						|
cat >expect <<'EOF'
 | 
						|
resolved
 | 
						|
 | 
						|
diff --git a/text b/text
 | 
						|
index 2bdf67a..2ab19ae 100644
 | 
						|
Binary files a/text and b/text differ
 | 
						|
resolved
 | 
						|
 | 
						|
diff --git a/text b/text
 | 
						|
index f719efd..2ab19ae 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 2bdf67a,f719efd..2ab19ae
 | 
						|
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 2bdf67a,f719efd..2ab19ae
 | 
						|
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 2bdf67a..2ab19ae 100644
 | 
						|
--- a/text
 | 
						|
+++ b/text
 | 
						|
@@ -1 +1 @@
 | 
						|
-THREE
 | 
						|
+RESOLVED
 | 
						|
resolved
 | 
						|
 | 
						|
diff --git a/text b/text
 | 
						|
index f719efd..2ab19ae 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 2bdf67a,f719efd..2ab19ae
 | 
						|
--- 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 2bdf67a,f719efd..2ab19ae
 | 
						|
--- 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 2bdf67a,f719efd..2ab19ae
 | 
						|
--- 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 2bdf67a,f719efd..0000000
 | 
						|
--- a/text
 | 
						|
+++ b/text
 | 
						|
@@@ -1,1 -1,1 +1,5 @@@
 | 
						|
++<<<<<<< HEAD
 | 
						|
 +THREE
 | 
						|
++=======
 | 
						|
+ TWO
 | 
						|
++>>>>>>> MASTER
 | 
						|
EOF
 | 
						|
test_expect_success 'diff --cc respects textconv on worktree file' '
 | 
						|
	git reset --hard HEAD^ &&
 | 
						|
	test_must_fail git merge master &&
 | 
						|
	git diff >actual &&
 | 
						|
	test_cmp expect actual
 | 
						|
'
 | 
						|
 | 
						|
test_done
 |