diff options
author | René Scharfe <rene.scharfe@lsrfire.ath.cx> | 2013-01-06 18:59:39 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-01-07 08:47:55 -0800 |
commit | 55292ea25dca1f3273b4e59aa37ee66cae4aa343 (patch) | |
tree | 6d0f9c1fc3ceb414353f0d636aed0b1e7b7d8640 /t | |
parent | e9882c80cda6decc2381ecbdd1f99ad6e49b4662 (diff) | |
download | git-55292ea25dca1f3273b4e59aa37ee66cae4aa343.tar.gz |
t5003: check if unzip supports symlinks
Only add a symlink to the repository if both the filesystem and
unzip support symlinks. To check the latter, add a ZIP file
containing a symlink, created like this with InfoZIP zip 3.0:
$ echo sample text >textfile
$ ln -s textfile symlink
$ zip -y infozip-symlinks.zip textfile symlink
If we can extract it successfully, we add a symlink to the test
repository for git archive --format=zip, or otherwise skip that
step. Users can see the skipped test and perhaps run it again
with a different unzip version.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-x | t/t5003-archive-zip.sh | 26 | ||||
-rw-r--r-- | t/t5003/infozip-symlinks.zip | bin | 0 -> 328 bytes |
2 files changed, 19 insertions, 7 deletions
diff --git a/t/t5003-archive-zip.sh b/t/t5003-archive-zip.sh index 3c61664c90..7cfe9ca3da 100755 --- a/t/t5003-archive-zip.sh +++ b/t/t5003-archive-zip.sh @@ -12,6 +12,15 @@ test_lazy_prereq UNZIP ' test $? -ne 127 ' +test_lazy_prereq UNZIP_SYMLINKS ' + ( + mkdir unzip-symlinks && + cd unzip-symlinks && + "$GIT_UNZIP" "$TEST_DIRECTORY"/t5003/infozip-symlinks.zip && + test -h symlink + ) +' + check_zip() { zipfile=$1.zip listfile=$1.lst @@ -40,15 +49,18 @@ test_expect_success \ cp /bin/sh a/bin && printf "A\$Format:%s\$O" "$SUBSTFORMAT" >a/substfile1 && printf "A not substituted O" >a/substfile2 && - if test_have_prereq SYMLINKS; then - ln -s a a/l1 - else - printf %s a > a/l1 - fi && (p=long_path_to_a_file && cd a && for depth in 1 2 3 4 5; do mkdir $p && cd $p; done && - echo text >file_with_long_path) && - (cd a && find .) | sort >a.lst' + echo text >file_with_long_path) +' + +test_expect_success SYMLINKS,UNZIP_SYMLINKS 'add symlink' ' + ln -s a a/symlink_to_a +' + +test_expect_success 'prepare file list' ' + (cd a && find .) | sort >a.lst +' test_expect_success \ 'add ignored file' \ diff --git a/t/t5003/infozip-symlinks.zip b/t/t5003/infozip-symlinks.zip Binary files differnew file mode 100644 index 0000000000..065728c631 --- /dev/null +++ b/t/t5003/infozip-symlinks.zip |