80 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
test_description='rewrite diff on binary file'
 | 
						|
 | 
						|
. ./test-lib.sh
 | 
						|
 | 
						|
# We must be large enough to meet the MINIMUM_BREAK_SIZE
 | 
						|
# requirement.
 | 
						|
make_file() {
 | 
						|
	# common first line to help identify rewrite versus regular diff
 | 
						|
	printf "=\n" >file
 | 
						|
	for i in 1 2 3 4 5 6 7 8 9 10
 | 
						|
	do
 | 
						|
		for j in 1 2 3 4 5 6 7 8 9
 | 
						|
		do
 | 
						|
			for k in 1 2 3 4 5
 | 
						|
			do
 | 
						|
				printf "$1\n"
 | 
						|
			done
 | 
						|
		done
 | 
						|
	done >>file
 | 
						|
}
 | 
						|
 | 
						|
test_expect_success 'create binary file with changes' '
 | 
						|
	make_file "\\0" &&
 | 
						|
	git add file &&
 | 
						|
	make_file "\\01"
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'vanilla diff is binary' '
 | 
						|
	git diff >diff &&
 | 
						|
	grep "Binary files a/file and b/file differ" diff
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'rewrite diff is binary' '
 | 
						|
	git diff -B >diff &&
 | 
						|
	grep "dissimilarity index" diff &&
 | 
						|
	grep "Binary files a/file and b/file differ" diff
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'rewrite diff can show binary patch' '
 | 
						|
	git diff -B --binary >diff &&
 | 
						|
	grep "dissimilarity index" diff &&
 | 
						|
	grep "GIT binary patch" diff
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'rewrite diff --numstat shows binary changes' '
 | 
						|
	git diff -B --numstat --summary >diff &&
 | 
						|
	grep -e "-	-	" diff &&
 | 
						|
	grep " rewrite file" diff
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'diff --stat counts binary rewrite as 0 lines' '
 | 
						|
	git diff -B --stat --summary >diff &&
 | 
						|
	grep "Bin" diff &&
 | 
						|
	test_i18ngrep "0 insertions.*0 deletions" diff &&
 | 
						|
	grep " rewrite file" diff
 | 
						|
'
 | 
						|
 | 
						|
{
 | 
						|
	echo "#!$SHELL_PATH"
 | 
						|
	cat <<'EOF'
 | 
						|
"$PERL_PATH" -e '$/ = undef; $_ = <>; s/./ord($&)/ge; print $_' < "$1"
 | 
						|
EOF
 | 
						|
} >dump
 | 
						|
chmod +x dump
 | 
						|
 | 
						|
test_expect_success 'setup textconv' '
 | 
						|
	echo file diff=foo >.gitattributes &&
 | 
						|
	git config diff.foo.textconv "\"$(pwd)\""/dump
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'rewrite diff respects textconv' '
 | 
						|
	git diff -B >diff &&
 | 
						|
	grep "dissimilarity index" diff &&
 | 
						|
	grep "^-61" diff &&
 | 
						|
	grep "^-0" diff
 | 
						|
'
 | 
						|
 | 
						|
test_done
 |