70 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
test_description='git apply handling criss-cross rename patch.'
 | 
						|
. ./test-lib.sh
 | 
						|
 | 
						|
create_file() {
 | 
						|
	cnt=0
 | 
						|
	while test $cnt -le 100
 | 
						|
	do
 | 
						|
		cnt=$(($cnt + 1))
 | 
						|
		echo "$2" >> "$1"
 | 
						|
	done
 | 
						|
}
 | 
						|
 | 
						|
test_expect_success 'setup' '
 | 
						|
	# Ensure that file sizes are different, because on Windows
 | 
						|
	# lstat() does not discover inode numbers, and we need
 | 
						|
	# other properties to discover swapped files
 | 
						|
	# (mtime is not always different, either).
 | 
						|
	create_file file1 "some content" &&
 | 
						|
	create_file file2 "some other content" &&
 | 
						|
	create_file file3 "again something else" &&
 | 
						|
	git add file1 file2 file3 &&
 | 
						|
	git commit -m 1
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'criss-cross rename' '
 | 
						|
	mv file1 tmp &&
 | 
						|
	mv file2 file1 &&
 | 
						|
	mv tmp file2 &&
 | 
						|
	cp file1 file1-swapped &&
 | 
						|
	cp file2 file2-swapped
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'diff -M -B' '
 | 
						|
	git diff -M -B > diff &&
 | 
						|
	git reset --hard
 | 
						|
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'apply' '
 | 
						|
	git apply diff &&
 | 
						|
	test_cmp file1 file1-swapped &&
 | 
						|
	test_cmp file2 file2-swapped
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'criss-cross rename' '
 | 
						|
	git reset --hard &&
 | 
						|
	mv file1 tmp &&
 | 
						|
	mv file2 file1 &&
 | 
						|
	mv file3 file2 &&
 | 
						|
	mv tmp file3 &&
 | 
						|
	cp file1 file1-swapped &&
 | 
						|
	cp file2 file2-swapped &&
 | 
						|
	cp file3 file3-swapped
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'diff -M -B' '
 | 
						|
	git diff -M -B > diff &&
 | 
						|
	git reset --hard
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'apply' '
 | 
						|
	git apply diff &&
 | 
						|
	test_cmp file1 file1-swapped &&
 | 
						|
	test_cmp file2 file2-swapped &&
 | 
						|
	test_cmp file3 file3-swapped
 | 
						|
'
 | 
						|
 | 
						|
test_done
 |