mirror of
https://github.com/git/git
synced 2024-08-27 19:49:21 +00:00
![Jeff King](/assets/img/avatar_default.png)
All of these violations are necessary parts of the tests (which are generally checking the behavior of trailing whitespace, or contain diff fragments with empty lines). Our solution is two-fold: 1. Process input with whitespace problems using tr. This has the added bonus that it becomes very obvious where the bogus whitespace is intended to go. 2. Move large diff fragments into their own supplemental files. This gets rid of the whitespace problem, since supplemental files are not checked, and it also makes the test script a bit easier to read. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
163 lines
3 KiB
Bash
Executable file
163 lines
3 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_done
|