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.
91 lines
2.3 KiB
91 lines
2.3 KiB
#!/bin/sh |
|
|
|
test_description='git apply with weird postimage filenames' |
|
|
|
. ./test-lib.sh |
|
|
|
test_expect_success 'setup' ' |
|
vector=$TEST_DIRECTORY/t4135 && |
|
|
|
test_tick && |
|
git commit --allow-empty -m preimage && |
|
git tag preimage && |
|
|
|
reset_preimage() { |
|
git checkout -f preimage^0 && |
|
git read-tree -u --reset HEAD && |
|
git update-index --refresh |
|
} && |
|
|
|
test_when_finished "rm -f \"tab embedded.txt\"" && |
|
test_when_finished "rm -f '\''\"quoteembedded\".txt'\''" && |
|
if touch -- "tab embedded.txt" '\''"quoteembedded".txt'\'' |
|
then |
|
test_set_prereq FUNNYNAMES |
|
fi |
|
' |
|
|
|
try_filename() { |
|
desc=$1 |
|
postimage=$2 |
|
prereq=${3:-} |
|
exp1=${4:-success} |
|
exp2=${5:-success} |
|
exp3=${6:-success} |
|
|
|
test_expect_$exp1 $prereq "$desc, git-style file creation patch" " |
|
echo postimage >expected && |
|
reset_preimage && |
|
rm -f '$postimage' && |
|
git apply -v \"\$vector\"/'git-$desc.diff' && |
|
test_cmp expected '$postimage' |
|
" |
|
|
|
test_expect_$exp2 $prereq "$desc, traditional patch" " |
|
echo postimage >expected && |
|
reset_preimage && |
|
echo preimage >'$postimage' && |
|
git apply -v \"\$vector\"/'diff-$desc.diff' && |
|
test_cmp expected '$postimage' |
|
" |
|
|
|
test_expect_$exp3 $prereq "$desc, traditional file creation patch" " |
|
echo postimage >expected && |
|
reset_preimage && |
|
rm -f '$postimage' && |
|
git apply -v \"\$vector\"/'add-$desc.diff' && |
|
test_cmp expected '$postimage' |
|
" |
|
} |
|
|
|
try_filename 'plain' 'postimage.txt' |
|
try_filename 'with spaces' 'post image.txt' |
|
try_filename 'with tab' 'post image.txt' FUNNYNAMES |
|
try_filename 'with backslash' 'post\image.txt' BSLASHPSPEC |
|
try_filename 'with quote' '"postimage".txt' FUNNYNAMES success failure success |
|
|
|
test_expect_success 'whitespace-damaged traditional patch' ' |
|
echo postimage >expected && |
|
reset_preimage && |
|
rm -f postimage.txt && |
|
git apply -v "$vector/damaged.diff" && |
|
test_cmp expected postimage.txt |
|
' |
|
|
|
test_expect_success 'traditional patch with colon in timezone' ' |
|
echo postimage >expected && |
|
reset_preimage && |
|
rm -f "post image.txt" && |
|
git apply "$vector/funny-tz.diff" && |
|
test_cmp expected "post image.txt" |
|
' |
|
|
|
test_expect_success 'traditional, whitespace-damaged, colon in timezone' ' |
|
echo postimage >expected && |
|
reset_preimage && |
|
rm -f "post image.txt" && |
|
git apply "$vector/damaged-tz.diff" && |
|
test_cmp expected "post image.txt" |
|
' |
|
|
|
test_done
|
|
|