git-commit-vandalism/t/t4116-apply-reverse.sh
Vincent van Ravesteijn a3428205e6 t: Replace 'perl' by $PERL_PATH
GIT-BUILD-OPTIONS defines PERL_PATH to be used in the test suite. Only a
few tests already actually use this variable when perl is needed. The
other test just call 'perl' and it might happen that the wrong perl
interpreter is used.

This becomes problematic on Windows, when the perl interpreter that is
compiled and installed on the Windows system is used, because this perl
interpreter might introduce some unexpected LF->CRLF conversions.

This patch makes sure that $PERL_PATH is used everywhere in the test suite
and that the correct perl interpreter is used.

Signed-off-by: Vincent van Ravesteijn <vfr@lyx.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-12 09:30:41 -07:00

92 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
#
# Copyright (c) 2005 Junio C Hamano
#
test_description='git apply in reverse
'
. ./test-lib.sh
test_expect_success setup '
for i in a b c d e f g h i j k l m n; do echo $i; done >file1 &&
$PERL_PATH -pe "y/ijk/\\000\\001\\002/" <file1 >file2 &&
git add file1 file2 &&
git commit -m initial &&
git tag initial &&
for i in a b c g h i J K L m o n p q; do echo $i; done >file1 &&
$PERL_PATH -pe "y/mon/\\000\\001\\002/" <file1 >file2 &&
git commit -a -m second &&
git tag second &&
git diff --binary initial second >patch
'
test_expect_success 'apply in forward' '
T0=`git rev-parse "second^{tree}"` &&
git reset --hard initial &&
git apply --index --binary patch &&
T1=`git write-tree` &&
test "$T0" = "$T1"
'
test_expect_success 'apply in reverse' '
git reset --hard second &&
git apply --reverse --binary --index patch &&
git diff >diff &&
test_cmp /dev/null diff
'
test_expect_success 'setup separate repository lacking postimage' '
git tar-tree initial initial | $TAR xf - &&
(
cd initial && git init && git add .
) &&
git tar-tree second second | $TAR xf - &&
(
cd second && git init && git add .
)
'
test_expect_success 'apply in forward without postimage' '
T0=`git rev-parse "second^{tree}"` &&
(
cd initial &&
git apply --index --binary ../patch &&
T1=`git write-tree` &&
test "$T0" = "$T1"
)
'
test_expect_success 'apply in reverse without postimage' '
T0=`git rev-parse "initial^{tree}"` &&
(
cd second &&
git apply --index --binary --reverse ../patch &&
T1=`git write-tree` &&
test "$T0" = "$T1"
)
'
test_expect_success 'reversing a whitespace introduction' '
sed "s/a/a /" < file1 > file1.new &&
mv file1.new file1 &&
git diff | git apply --reverse --whitespace=error
'
test_done