Author: bodewig
Date: Fri Jul 29 04:00:09 2011
New Revision: 1152092

URL: http://svn.apache.org/viewvc?rev=1152092&view=rev
Log:
very preliminary not-a-test for writing archives with more than 64k entries.  
InfoZIP's zip likes the archive created.

Modified:
    
commons/proper/compress/branches/zip64/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportTest.java

Modified: 
commons/proper/compress/branches/zip64/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/branches/zip64/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportTest.java?rev=1152092&r1=1152091&r2=1152092&view=diff
==============================================================================
--- 
commons/proper/compress/branches/zip64/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportTest.java
 (original)
+++ 
commons/proper/compress/branches/zip64/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportTest.java
 Fri Jul 29 04:00:09 2011
@@ -20,6 +20,7 @@ package org.apache.commons.compress.arch
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.IOException;
 import java.net.URI;
 import java.net.URL;
 import java.util.Random;
@@ -102,9 +103,49 @@ public class Zip64SupportTest {
             if (zin != null) {
                 zin.close();
             }
-            if (fin != null) {
-                fin.close();
-            }
+            fin.close();
         }
     }
+
+    @Test public void write100KFiles() throws Throwable {
+        withTemporaryArchive("write100KFiles", new ZipOutputTest() {
+                public void test(ZipArchiveOutputStream zos)
+                    throws IOException {
+                    for (int i = 0; i < ONE_HUNDRED_THOUSAND; i++) {
+                        ZipArchiveEntry zae =
+                            new ZipArchiveEntry(String.valueOf(i));
+                        zae.setSize(0);
+                        zos.putArchiveEntry(zae);
+                        zos.closeArchiveEntry();
+                    }
+                }
+            });
+    }
+
+    static interface ZipOutputTest {
+        void test(ZipArchiveOutputStream zos) throws IOException;
+    }
+
+    private static void withTemporaryArchive(String testName,
+                                             ZipOutputTest test)
+        throws Throwable {
+        File f = getTempFile(testName);
+        ZipArchiveOutputStream zos = new ZipArchiveOutputStream(f);
+        try {
+            test.test(zos);
+        } catch (IOException ex) {
+            System.err.println("Failed to write archive because of: "
+                               + ex.getMessage()
+                               + " - likely not enough disk space.");
+            assumeTrue(false);
+        } finally {
+            zos.close();
+        }
+    }
+
+    private static File getTempFile(String testName) throws Throwable {
+        File f = File.createTempFile("commons-compress-" + testName, ".zip");
+        f.deleteOnExit();
+        return f;
+    }
 }


Reply via email to