179 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			179 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| # Copyright (c) 2007 Junio C Hamano
 | |
| #
 | |
| 
 | |
| test_description='git apply --whitespace=strip and configuration file.
 | |
| 
 | |
| '
 | |
| 
 | |
| . ./test-lib.sh
 | |
| 
 | |
| test_expect_success setup '
 | |
| 	mkdir sub &&
 | |
| 	echo A >sub/file1 &&
 | |
| 	cp sub/file1 saved &&
 | |
| 	git add sub/file1 &&
 | |
| 	echo "B " >sub/file1 &&
 | |
| 	git diff >patch.file
 | |
| '
 | |
| 
 | |
| # Also handcraft GNU diff output; note this has trailing whitespace.
 | |
| tr '_' ' ' >gpatch.file <<\EOF &&
 | |
| --- file1	2007-02-21 01:04:24.000000000 -0800
 | |
| +++ file1+	2007-02-21 01:07:44.000000000 -0800
 | |
| @@ -1 +1 @@
 | |
| -A
 | |
| +B_
 | |
| EOF
 | |
| 
 | |
| sed -e 's|file1|sub/&|' gpatch.file >gpatch-sub.file &&
 | |
| sed -e '
 | |
| 	/^--- /s|file1|a/sub/&|
 | |
| 	/^+++ /s|file1|b/sub/&|
 | |
| ' gpatch.file >gpatch-ab-sub.file &&
 | |
| 
 | |
| check_result () {
 | |
| 	if grep " " "$1"
 | |
| 	then
 | |
| 		echo "Eh?"
 | |
| 		false
 | |
| 	elif grep B "$1"
 | |
| 	then
 | |
| 		echo Happy
 | |
| 	else
 | |
| 		echo "Huh?"
 | |
| 		false
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| test_expect_success 'apply --whitespace=strip' '
 | |
| 
 | |
| 	rm -f sub/file1 &&
 | |
| 	cp saved sub/file1 &&
 | |
| 	git update-index --refresh &&
 | |
| 
 | |
| 	git apply --whitespace=strip patch.file &&
 | |
| 	check_result sub/file1
 | |
| '
 | |
| 
 | |
| test_expect_success 'apply --whitespace=strip from config' '
 | |
| 
 | |
| 	rm -f sub/file1 &&
 | |
| 	cp saved sub/file1 &&
 | |
| 	git update-index --refresh &&
 | |
| 
 | |
| 	git config apply.whitespace strip &&
 | |
| 	git apply patch.file &&
 | |
| 	check_result sub/file1
 | |
| '
 | |
| 
 | |
| D=$(pwd)
 | |
| 
 | |
| test_expect_success 'apply --whitespace=strip in subdir' '
 | |
| 
 | |
| 	cd "$D" &&
 | |
| 	git config --unset-all apply.whitespace &&
 | |
| 	rm -f sub/file1 &&
 | |
| 	cp saved sub/file1 &&
 | |
| 	git update-index --refresh &&
 | |
| 
 | |
| 	cd sub &&
 | |
| 	git apply --whitespace=strip ../patch.file &&
 | |
| 	check_result file1
 | |
| '
 | |
| 
 | |
| test_expect_success 'apply --whitespace=strip from config in subdir' '
 | |
| 
 | |
| 	cd "$D" &&
 | |
| 	git config apply.whitespace strip &&
 | |
| 	rm -f sub/file1 &&
 | |
| 	cp saved sub/file1 &&
 | |
| 	git update-index --refresh &&
 | |
| 
 | |
| 	cd sub &&
 | |
| 	git apply ../patch.file &&
 | |
| 	check_result file1
 | |
| '
 | |
| 
 | |
| test_expect_success 'same in subdir but with traditional patch input' '
 | |
| 
 | |
| 	cd "$D" &&
 | |
| 	git config apply.whitespace strip &&
 | |
| 	rm -f sub/file1 &&
 | |
| 	cp saved sub/file1 &&
 | |
| 	git update-index --refresh &&
 | |
| 
 | |
| 	cd sub &&
 | |
| 	git apply ../gpatch.file &&
 | |
| 	check_result file1
 | |
| '
 | |
| 
 | |
| test_expect_success 'same but with traditional patch input of depth 1' '
 | |
| 
 | |
| 	cd "$D" &&
 | |
| 	git config apply.whitespace strip &&
 | |
| 	rm -f sub/file1 &&
 | |
| 	cp saved sub/file1 &&
 | |
| 	git update-index --refresh &&
 | |
| 
 | |
| 	cd sub &&
 | |
| 	git apply ../gpatch-sub.file &&
 | |
| 	check_result file1
 | |
| '
 | |
| 
 | |
| test_expect_success 'same but with traditional patch input of depth 2' '
 | |
| 
 | |
| 	cd "$D" &&
 | |
| 	git config apply.whitespace strip &&
 | |
| 	rm -f sub/file1 &&
 | |
| 	cp saved sub/file1 &&
 | |
| 	git update-index --refresh &&
 | |
| 
 | |
| 	cd sub &&
 | |
| 	git apply ../gpatch-ab-sub.file &&
 | |
| 	check_result file1
 | |
| '
 | |
| 
 | |
| test_expect_success 'same but with traditional patch input of depth 1' '
 | |
| 
 | |
| 	cd "$D" &&
 | |
| 	git config apply.whitespace strip &&
 | |
| 	rm -f sub/file1 &&
 | |
| 	cp saved sub/file1 &&
 | |
| 	git update-index --refresh &&
 | |
| 
 | |
| 	git apply -p0 gpatch-sub.file &&
 | |
| 	check_result sub/file1
 | |
| '
 | |
| 
 | |
| test_expect_success 'same but with traditional patch input of depth 2' '
 | |
| 
 | |
| 	cd "$D" &&
 | |
| 	git config apply.whitespace strip &&
 | |
| 	rm -f sub/file1 &&
 | |
| 	cp saved sub/file1 &&
 | |
| 	git update-index --refresh &&
 | |
| 
 | |
| 	git apply gpatch-ab-sub.file &&
 | |
| 	check_result sub/file1
 | |
| '
 | |
| 
 | |
| test_expect_success 'in subdir with traditional patch input' '
 | |
| 	cd "$D" &&
 | |
| 	git config apply.whitespace strip &&
 | |
| 	cat >.gitattributes <<-EOF &&
 | |
| 	/* whitespace=blank-at-eol
 | |
| 	sub/* whitespace=-blank-at-eol
 | |
| 	EOF
 | |
| 	rm -f sub/file1 &&
 | |
| 	cp saved sub/file1 &&
 | |
| 	git update-index --refresh &&
 | |
| 
 | |
| 	cd sub &&
 | |
| 	git apply ../gpatch.file &&
 | |
| 	echo "B " >expect &&
 | |
| 	test_cmp expect file1
 | |
| '
 | |
| 
 | |
| test_done
 |