git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 4/4] t5002: check if unzip supports symlinks

From
René Scharfe <rene.scharfe@lsrfire.ath.cx>
Date
Jan 6, 2013, 17:59 UTC
Message-ID
<50E9BB8B.9020101@lsrfire.ath.cx>
In-Reply-To
<50E9B82D.50005@lsrfire.ath.cx>

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>
---
 t/t5002-archive-zip.sh       |  26 +++++++++++++++++++-------
 t/t5002/infozip-symlinks.zip | Bin 0 -> 328 bytes
 2 files changed, 19 insertions(+), 7 deletions(-)
 create mode 100644 t/t5002/infozip-symlinks.zip
diff --git a/t/t5002-archive-zip.sh b/t/t5002-archive-zip.sh
index ac9c6d4..d35aa24 100755
--- a/t/t5002-archive-zip.sh
+++ b/t/t5002-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"/t5002/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/t5002/infozip-symlinks.zip b/t/t5002/infozip-symlinks.zip
new file mode 100644
index 0000000000000000000000000000000000000000..065728c631cf1f7ab20a045a83abc3e08455eeba
GIT binary patch
literal 328
zcmWIWW@h1H0D(ty)tzkeJdg4K*&xipAj43ST2YdgnUfkC!pXp_F7Y}5gi9;985mh!
zFf%Z)qyW_wC*~I9q$+@vas|Lmdj&M@9kbsh4zNiK4D3MDiYs$-GV`**hM5Bm0%0`6
zU={{=Gcw6B<8qh;&`<^jMj&3&2x7r>g@&*~oQY;CvT2wOgO~;~=j}p2APILS&@e1c
U4De=U11V+#!r4H2I*7vn0CeC%rvLx|

literal 0
HcmV?d00001
-- 
1.7.12
Previous: René ScharfeNext: Jonathan Nieder
Message 20 of 23 in “[LHF] making t5000 "tar xf" tests more lenient”
  1. Junio C HamanoDec 24, 2012
  2. René ScharfeJan 5, 2013
  3. Junio C HamanoJan 5, 2013
  4. Junio C HamanoJan 5, 2013
  5. René ScharfeJan 5, 2013
  6. archive-tar: split long paths more carefullyRené Scharfe, Jan 5, 2013
  7. Jonathan NiederJan 5, 2013
  8. Junio C HamanoJan 6, 2013
  9. archive-zip: write uncompressed size into header even with streamingRené Scharfe, Jan 6, 2013
  10. 0/4 ZIP test fixesRené Scharfe, Jan 6, 2013
  11. 1/4 t0024, t5000: clear variable UNZIP, use GIT_UNZIP insteadRené Scharfe, Jan 6, 2013
  12. Jonathan NiederJan 7, 2013
  13. René ScharfeJan 7, 2013
  14. 2/4 t0024, t5000: use test_lazy_prereq for UNZIPRené Scharfe, Jan 6, 2013
  15. Matt KraaiJan 6, 2013
  16. René ScharfeJan 6, 2013
  17. Jonathan NiederJan 7, 2013
  18. René ScharfeJan 7, 2013
  19. 3/4 t5000, t5002: move ZIP tests into their own scriptRené Scharfe, Jan 6, 2013
  20. 4/4 t5002: check if unzip supports symlinksRené Scharfe, Jan 6, 2013
  21. Jonathan NiederJan 7, 2013
  22. René ScharfeJan 7, 2013
  23. Jonathan NiederJan 10, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.