89 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| # Copyright (c) 2007 Shawn O. Pearce
 | |
| #
 | |
| 
 | |
| test_description='git apply -p handling.'
 | |
| 
 | |
| . ./test-lib.sh
 | |
| 
 | |
| test_expect_success setup '
 | |
| 	mkdir sub &&
 | |
| 	echo A >sub/file1 &&
 | |
| 	cp sub/file1 file1.saved &&
 | |
| 	git add sub/file1 &&
 | |
| 	echo B >sub/file1 &&
 | |
| 	git diff >patch.file &&
 | |
| 	git checkout -- sub/file1 &&
 | |
| 	git mv sub süb &&
 | |
| 	echo B >süb/file1 &&
 | |
| 	git diff >patch.escaped &&
 | |
| 	grep "[\]" patch.escaped &&
 | |
| 	rm süb/file1 &&
 | |
| 	rmdir süb
 | |
| '
 | |
| 
 | |
| test_expect_success 'apply git diff with -p2' '
 | |
| 	cp file1.saved file1 &&
 | |
| 	git apply -p2 patch.file
 | |
| '
 | |
| 
 | |
| test_expect_success 'apply with too large -p' '
 | |
| 	cp file1.saved file1 &&
 | |
| 	test_must_fail git apply --stat -p3 patch.file 2>err &&
 | |
| 	test_i18ngrep "removing 3 leading" err
 | |
| '
 | |
| 
 | |
| test_expect_success 'apply (-p2) traditional diff with funny filenames' '
 | |
| 	cat >patch.quotes <<-\EOF &&
 | |
| 	diff -u "a/"sub/file1 "b/"sub/file1
 | |
| 	--- "a/"sub/file1
 | |
| 	+++ "b/"sub/file1
 | |
| 	@@ -1 +1 @@
 | |
| 	-A
 | |
| 	+B
 | |
| 	EOF
 | |
| 	echo B >expected &&
 | |
| 
 | |
| 	cp file1.saved file1 &&
 | |
| 	git apply -p2 patch.quotes &&
 | |
| 	test_cmp expected file1
 | |
| '
 | |
| 
 | |
| test_expect_success 'apply with too large -p and fancy filename' '
 | |
| 	cp file1.saved file1 &&
 | |
| 	test_must_fail git apply --stat -p3 patch.escaped 2>err &&
 | |
| 	test_i18ngrep "removing 3 leading" err
 | |
| '
 | |
| 
 | |
| test_expect_success 'apply (-p2) diff, mode change only' '
 | |
| 	cat >patch.chmod <<-\EOF &&
 | |
| 	diff --git a/sub/file1 b/sub/file1
 | |
| 	old mode 100644
 | |
| 	new mode 100755
 | |
| 	EOF
 | |
| 	test_chmod -x file1 &&
 | |
| 	git apply --index -p2 patch.chmod &&
 | |
| 	case $(git ls-files -s file1) in 100755*) : good;; *) false;; esac
 | |
| '
 | |
| 
 | |
| test_expect_success FILEMODE 'file mode was changed' '
 | |
| 	test -x file1
 | |
| '
 | |
| 
 | |
| test_expect_success 'apply (-p2) diff, rename' '
 | |
| 	cat >patch.rename <<-\EOF &&
 | |
| 	diff --git a/sub/file1 b/sub/file2
 | |
| 	similarity index 100%
 | |
| 	rename from sub/file1
 | |
| 	rename to sub/file2
 | |
| 	EOF
 | |
| 	echo A >expected &&
 | |
| 
 | |
| 	cp file1.saved file1 &&
 | |
| 	rm -f file2 &&
 | |
| 	git apply -p2 patch.rename &&
 | |
| 	test_cmp expected file2
 | |
| '
 | |
| 
 | |
| test_done
 |