| #!/bin/sh | 
 | # | 
 | # Copyright (C) 2015 Kyle J. McKay | 
 | # | 
 |  | 
 | test_description='git apply test patches with whitespace expansion.' | 
 |  | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success setup ' | 
 | 	# | 
 | 	## create test-N, patchN.patch, expect-N files | 
 | 	# | 
 |  | 
 | 	# test 1 | 
 | 	printf "\t%s\n" 1 2 3 4 5 6 >before && | 
 | 	printf "\t%s\n" 1 2 3 >after && | 
 | 	printf "%64s\n" a b c >>after && | 
 | 	printf "\t%s\n" 4 5 6 >>after && | 
 | 	test_expect_code 1 git diff --no-index before after >patch1.patch.raw && | 
 | 	sed -e "s/before/test-1/" -e "s/after/test-1/" patch1.patch.raw >patch1.patch && | 
 | 	printf "%64s\n" 1 2 3 4 5 6 >test-1 && | 
 | 	printf "%64s\n" 1 2 3 a b c 4 5 6 >expect-1 && | 
 |  | 
 | 	# test 2 | 
 | 	printf "\t%s\n" a b c d e f >before && | 
 | 	printf "\t%s\n" a b c >after && | 
 | 	n=10 && | 
 | 	x=1 && | 
 | 	while test $x -lt $n | 
 | 	do | 
 | 		printf "%63s%d\n" "" $x >>after | 
 | 		x=$(( $x + 1 )) | 
 | 	done && | 
 | 	printf "\t%s\n" d e f >>after && | 
 | 	test_expect_code 1 git diff --no-index before after >patch2.patch.raw && | 
 | 	sed -e "s/before/test-2/" -e "s/after/test-2/" patch2.patch.raw >patch2.patch && | 
 | 	printf "%64s\n" a b c d e f >test-2 && | 
 | 	printf "%64s\n" a b c >expect-2 && | 
 | 	x=1 && | 
 | 	while test $x -lt $n | 
 | 	do | 
 | 		printf "%63s%d\n" "" $x >>expect-2 | 
 | 		x=$(( $x + 1 )) | 
 | 	done && | 
 | 	printf "%64s\n" d e f >>expect-2 && | 
 |  | 
 | 	# test 3 | 
 | 	printf "\t%s\n" a b c d e f >before && | 
 | 	printf "\t%s\n" a b c >after && | 
 | 	n=100 && | 
 | 	x=0 && | 
 | 	while test $x -lt $n | 
 | 	do | 
 | 		printf "%63s%02d\n" "" $x >>after | 
 | 		x=$(( $x + 1 )) | 
 | 	done && | 
 | 	printf "\t%s\n" d e f >>after && | 
 | 	test_expect_code 1 git diff --no-index before after >patch3.patch.raw && | 
 | 	sed -e "s/before/test-3/" -e "s/after/test-3/" patch3.patch.raw >patch3.patch && | 
 | 	printf "%64s\n" a b c d e f >test-3 && | 
 | 	printf "%64s\n" a b c >expect-3 && | 
 | 	x=0 && | 
 | 	while test $x -lt $n | 
 | 	do | 
 | 		printf "%63s%02d\n" "" $x >>expect-3 | 
 | 		x=$(( $x + 1 )) | 
 | 	done && | 
 | 	printf "%64s\n" d e f >>expect-3 && | 
 |  | 
 | 	# test 4 | 
 | 	>before && | 
 | 	x=0 && | 
 | 	while test $x -lt 50 | 
 | 	do | 
 | 		printf "\t%02d\n" $x >>before | 
 | 		x=$(( $x + 1 )) | 
 | 	done && | 
 | 	cat before >after && | 
 | 	printf "%64s\n" a b c >>after && | 
 | 	while test $x -lt 100 | 
 | 	do | 
 | 		printf "\t%02d\n" $x >>before | 
 | 		printf "\t%02d\n" $x >>after | 
 | 		x=$(( $x + 1 )) | 
 | 	done && | 
 | 	test_expect_code 1 git diff --no-index before after >patch4.patch.raw && | 
 | 	sed -e "s/before/test-4/" -e "s/after/test-4/" patch4.patch.raw >patch4.patch && | 
 | 	>test-4 && | 
 | 	x=0 && | 
 | 	while test $x -lt 50 | 
 | 	do | 
 | 		printf "%63s%02d\n" "" $x >>test-4 | 
 | 		x=$(( $x + 1 )) | 
 | 	done && | 
 | 	cat test-4 >expect-4 && | 
 | 	printf "%64s\n" a b c >>expect-4 && | 
 | 	while test $x -lt 100 | 
 | 	do | 
 | 		printf "%63s%02d\n" "" $x >>test-4 | 
 | 		printf "%63s%02d\n" "" $x >>expect-4 | 
 | 		x=$(( $x + 1 )) | 
 | 	done && | 
 |  | 
 | 	git config core.whitespace tab-in-indent,tabwidth=63 && | 
 | 	git config apply.whitespace fix | 
 |  | 
 | ' | 
 |  | 
 | # Note that `patch` can successfully apply all patches when run | 
 | # with the --ignore-whitespace option. | 
 |  | 
 | for t in 1 2 3 4 | 
 | do | 
 | 	test_expect_success 'apply with ws expansion (t=$t)' ' | 
 | 		git apply patch$t.patch && | 
 | 		test_cmp expect-$t test-$t | 
 | 	' | 
 | done | 
 |  | 
 | test_done |