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); }