Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: > I'd rather avoid changing FUNNYNAMES at this stage, if we can help it. I wonder if it is sufficient to ask "unzip -l" the names of the files in the archive, without having to materialize these files on the filesystem. Would that bypass the whole FUNNYNAMES business, or is "unzip" paranoid enough to reject an archive, even when it is not extracting into the local filesystem, with a path that it would not be able to extract if it were asked to? I do not know how standardized different implementations of "unzip" is, and how similar output "unzip -l" implementations produce are, but the following seems to pass for me locally. t/t5003-archive-zip.sh | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git c/t/t5003-archive-zip.sh w/t/t5003-archive-zip.sh index 3992d08158..f2fdf2c235 100755 --- c/t/t5003-archive-zip.sh +++ w/t/t5003-archive-zip.sh @@ -207,23 +207,13 @@ check_zip with_untracked check_added with_untracked untracked untracked test_expect_success UNZIP 'git archive --format=zip --add-virtual-file' ' - if test_have_prereq FUNNYNAMES - then - PATHNAME="pathname with : colon" - else - PATHNAME="pathname without colon" - fi && + PATHNAME="pathname with : colon" && git archive --format=zip >with_file_with_content.zip \ --add-virtual-file=\""$PATHNAME"\": \ --add-virtual-file=hello:world $EMPTY_TREE && - test_when_finished "rm -rf tmp-unpack" && - mkdir tmp-unpack && ( - cd tmp-unpack && - "$GIT_UNZIP" ../with_file_with_content.zip && - test_path_is_file hello && - test_path_is_file "$PATHNAME" && - test world = $(cat hello) - ) + "$GIT_UNZIP" -l with_file_with_content.zip >toc && + grep -e " $PATHNAME\$" toc && + grep -e " hello\$" toc ' test_expect_success 'git archive --format=zip --add-file twice' '