You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
179 lines
3.4 KiB
179 lines
3.4 KiB
#!/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
|
|
|