tests: exercise "git apply" with weird filenames
Check that "git apply" can cope with strange filenames, particularly
filenames with spaces.
Not all platforms have a sane enough diff -u and expand to
reliably create the such patches and maybe future versions of GNU
diff will handle funny characters differently, so this uses
pre-generated patches. The script used to generate them is in
t/t4135/make-patches.
Filenames with tabs are not usable on NTFS; use something like the
FUNNYNAMES prerequisite from v1.3.0-rc1~67 (2006-03-03) to skip the
relevant tests when appropriate. The detection is not shared in
test-lib.sh to avoid wasting time while running other test scripts.
Backslash is the path separator on Windows, so do not used it in
file names there (v1.6.3-rc0~93^2~6, 2009-03-13).
Finally, filenames starting with a quotation mark do not behave well
in msys (see v1.7.0-rc0~94^2, t4030, t4031: work around bogus MSYS
bash path conversion, 2010-01-01), so skip those tests on Windows,
too.
Helped-by: Andreas Schwab <schwab@linux-m68k.org>
Helped-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-08-19 05:48:03 +04:00
|
|
|
#!/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'\''" &&
|
mingw: do not bother to test funny file names
MSYS2 actually allows to create files or directories whose names contain
tabs, newlines or colors, even if plain Win32 API cannot access them.
As we are using an MSYS2 bash to run the tests, such files or
directories are created successfully, but Git itself has no chance to
work with them because it is a regular Windows program, hence limited by
the Win32 API.
With this change, on Windows otherwise failing tests in
t3300-funny-names.sh, t3600-rm.sh, t3703-add-magic-pathspec.sh,
t3902-quoted.sh, t4016-diff-quote.sh, t4135-apply-weird-filenames.sh,
t9200-git-cvsexportcommit.sh, and t9903-bash-prompt.sh are skipped.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-01-27 19:20:26 +03:00
|
|
|
if test_have_prereq !MINGW &&
|
|
|
|
touch -- "tab embedded.txt" '\''"quoteembedded".txt'\''
|
tests: exercise "git apply" with weird filenames
Check that "git apply" can cope with strange filenames, particularly
filenames with spaces.
Not all platforms have a sane enough diff -u and expand to
reliably create the such patches and maybe future versions of GNU
diff will handle funny characters differently, so this uses
pre-generated patches. The script used to generate them is in
t/t4135/make-patches.
Filenames with tabs are not usable on NTFS; use something like the
FUNNYNAMES prerequisite from v1.3.0-rc1~67 (2006-03-03) to skip the
relevant tests when appropriate. The detection is not shared in
test-lib.sh to avoid wasting time while running other test scripts.
Backslash is the path separator on Windows, so do not used it in
file names there (v1.6.3-rc0~93^2~6, 2009-03-13).
Finally, filenames starting with a quotation mark do not behave well
in msys (see v1.7.0-rc0~94^2, t4030, t4031: work around bogus MSYS
bash path conversion, 2010-01-01), so skip those tests on Windows,
too.
Helped-by: Andreas Schwab <schwab@linux-m68k.org>
Helped-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-08-19 05:48:03 +04:00
|
|
|
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'
|
2010-08-19 05:50:14 +04:00
|
|
|
try_filename 'with spaces' 'post image.txt'
|
|
|
|
try_filename 'with tab' 'post image.txt' FUNNYNAMES
|
tests: exercise "git apply" with weird filenames
Check that "git apply" can cope with strange filenames, particularly
filenames with spaces.
Not all platforms have a sane enough diff -u and expand to
reliably create the such patches and maybe future versions of GNU
diff will handle funny characters differently, so this uses
pre-generated patches. The script used to generate them is in
t/t4135/make-patches.
Filenames with tabs are not usable on NTFS; use something like the
FUNNYNAMES prerequisite from v1.3.0-rc1~67 (2006-03-03) to skip the
relevant tests when appropriate. The detection is not shared in
test-lib.sh to avoid wasting time while running other test scripts.
Backslash is the path separator on Windows, so do not used it in
file names there (v1.6.3-rc0~93^2~6, 2009-03-13).
Finally, filenames starting with a quotation mark do not behave well
in msys (see v1.7.0-rc0~94^2, t4030, t4031: work around bogus MSYS
bash path conversion, 2010-01-01), so skip those tests on Windows,
too.
Helped-by: Andreas Schwab <schwab@linux-m68k.org>
Helped-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-08-19 05:48:03 +04:00
|
|
|
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
|
|
|
|
'
|
|
|
|
|
2010-09-30 01:41:08 +04:00
|
|
|
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"
|
|
|
|
'
|
|
|
|
|
tests: exercise "git apply" with weird filenames
Check that "git apply" can cope with strange filenames, particularly
filenames with spaces.
Not all platforms have a sane enough diff -u and expand to
reliably create the such patches and maybe future versions of GNU
diff will handle funny characters differently, so this uses
pre-generated patches. The script used to generate them is in
t/t4135/make-patches.
Filenames with tabs are not usable on NTFS; use something like the
FUNNYNAMES prerequisite from v1.3.0-rc1~67 (2006-03-03) to skip the
relevant tests when appropriate. The detection is not shared in
test-lib.sh to avoid wasting time while running other test scripts.
Backslash is the path separator on Windows, so do not used it in
file names there (v1.6.3-rc0~93^2~6, 2009-03-13).
Finally, filenames starting with a quotation mark do not behave well
in msys (see v1.7.0-rc0~94^2, t4030, t4031: work around bogus MSYS
bash path conversion, 2010-01-01), so skip those tests on Windows,
too.
Helped-by: Andreas Schwab <schwab@linux-m68k.org>
Helped-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-08-19 05:48:03 +04:00
|
|
|
test_done
|