Author: sebb
Date: Tue Mar 31 01:01:21 2009
New Revision: 760280

URL: http://svn.apache.org/viewvc?rev=760280&view=rev
Log:
Make factory available to test cases
Use generic createArchiveEntry() method so can properly create any archive type
Always check entry size when reading archives

Modified:
    
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/AbstractTestCase.java

Modified: 
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/AbstractTestCase.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/AbstractTestCase.java?rev=760280&r1=760279&r2=760280&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/AbstractTestCase.java
 (original)
+++ 
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/AbstractTestCase.java
 Tue Mar 31 01:01:21 2009
@@ -36,7 +36,6 @@
 import org.apache.commons.compress.archivers.ArchiveInputStream;
 import org.apache.commons.compress.archivers.ArchiveOutputStream;
 import org.apache.commons.compress.archivers.ArchiveStreamFactory;
-import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.commons.compress.utils.IOUtils;
 
 public abstract class AbstractTestCase extends TestCase {
@@ -47,7 +46,7 @@
     private File archive; // used to delete the archive in tearDown
     protected List archiveList; // Lists the content of the archive as 
originally created
     
-    private ArchiveStreamFactory factory = new ArchiveStreamFactory();
+    protected ArchiveStreamFactory factory = new ArchiveStreamFactory();
 
     protected void setUp() throws Exception {
         dir = mkdir("dir");
@@ -168,8 +167,7 @@
      */
     private void addArchiveEntry(ArchiveOutputStream out, String filename, 
final File infile)
             throws IOException, FileNotFoundException {
-        ZipArchiveEntry entry = new ZipArchiveEntry(filename);
-        entry.setSize(infile.length());
+        ArchiveEntry entry = out.createArchiveEntry(infile, filename);
         out.putArchiveEntry(entry);
         IOUtils.copy(new FileInputStream(infile), out);
         out.closeArchiveEntry();
@@ -215,7 +213,8 @@
             archive = File.createTempFile("empty", "." + archivename);
             stream = new FileOutputStream(archive);
             out = factory.createArchiveOutputStream(archivename, stream);
-            addArchiveEntry(out, "testdata/test1.xml", getFile("test1.xml"));
+            // Use short file name so does not cause problems for ar
+            addArchiveEntry(out, "test1.xml", getFile("test1.xml"));
         } finally {
             if (out != null) {
                 out.close();
@@ -247,6 +246,13 @@
         }
     }
 
+    /**
+     * Checks that an archive input stream can be read, and that the file data 
matches file sizes.
+     * 
+     * @param in
+     * @param expected list of expected entries or <code>null</code> if no 
check of names desired
+     * @throws Exception
+     */
     protected void checkArchiveContent(ArchiveInputStream in, List expected)
             throws Exception {
         File result = File.createTempFile("dir-result", "");
@@ -267,25 +273,25 @@
                     out.close();
                 }
 
-                if (entry.getSize() != -1) {// some test cases don't set the 
size
-                    assertEquals(entry.getSize(), copied);
-                }
+                assertEquals("Entry.size should equal bytes 
read.",entry.getSize(), copied);
 
                 if (!outfile.exists()) {
                     fail("extraction failed: " + entry.getName());
                 }
-                if (!expected.remove(entry.getName())) {
+                if (expected != null && !expected.remove(entry.getName())) {
                     fail("unexpected entry: " + entry.getName());
                 }
             }
             in.close();
-            if (expected.size() > 0) {
+            if (expected != null && expected.size() > 0) {
                 for (Iterator iterator = expected.iterator(); 
iterator.hasNext();) {
                     String name = (String) iterator.next();
                     fail("Expected entry: " + name);
                 }
             }
-            assertEquals(0, expected.size());
+            if (expected != null) {
+                assertEquals(0, expected.size());
+            }
         } finally {
             rmdir(result);
         }


Reply via email to