#!/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
