Author: tcurdt
Date: Fri Mar 27 20:09:40 2009
New Revision: 759326
URL: http://svn.apache.org/viewvc?rev=759326&view=rev
Log:
reproduce https://issues.apache.org/jira/browse/COMPRESS-11
Modified:
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java
Modified:
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java?rev=759326&r1=759325&r2=759326&view=diff
==============================================================================
---
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java
(original)
+++
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java
Fri Mar 27 20:09:40 2009
@@ -18,18 +18,20 @@
*/
package org.apache.commons.compress.archivers;
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
+import org.apache.commons.compress.AbstractTestCase;
import org.apache.commons.compress.archivers.ar.ArArchiveEntry;
import org.apache.commons.compress.utils.IOUtils;
-import org.apache.commons.compress.AbstractTestCase;
-
public final class ArTestCase extends AbstractTestCase {
+
public void testArArchiveCreation() throws Exception {
final File output = new File(dir, "bla.ar");
@@ -71,7 +73,7 @@
// UnArArchive Operation
final File input = output;
final InputStream is = new FileInputStream(input);
- final ArchiveInputStream in = new
ArchiveStreamFactory().createArchiveInputStream("ar", is);
+ final ArchiveInputStream in = new
ArchiveStreamFactory().createArchiveInputStream(new BufferedInputStream(is));
final ArArchiveEntry entry = (ArArchiveEntry)in.getNextEntry();
File target = new File(dir, entry.getName());
@@ -84,4 +86,74 @@
is.close();
}
+ public void testArDelete() throws Exception {
+ final File output = new File(dir, "bla.ar");
+
+ {
+ // create
+ final File file1 = getFile("test1.xml");
+ final File file2 = getFile("test2.xml");
+
+ final OutputStream out = new FileOutputStream(output);
+ final ArchiveOutputStream os = new
ArchiveStreamFactory().createArchiveOutputStream("ar", out);
+ os.putArchiveEntry(new ArArchiveEntry("test1.xml",
file1.length()));
+ IOUtils.copy(new FileInputStream(file1), os);
+ os.closeArchiveEntry();
+
+ os.putArchiveEntry(new ArArchiveEntry("test2.xml",
file2.length()));
+ IOUtils.copy(new FileInputStream(file2), os);
+ os.closeArchiveEntry();
+ os.close();
+ out.close();
+ }
+
+ final File output2 = new File(dir, "bla2.ar");
+
+ {
+ // remove all but one file
+ final InputStream is = new FileInputStream(output);
+ final OutputStream os = new FileOutputStream(output2);
+ final ArchiveOutputStream aos = new
ArchiveStreamFactory().createArchiveOutputStream("ar", os);
+ final ArchiveInputStream ais = new
ArchiveStreamFactory().createArchiveInputStream(new BufferedInputStream(is));
+ while(true) {
+ final ArArchiveEntry entry =
(ArArchiveEntry)ais.getNextEntry();
+ if (entry == null) {
+ break;
+ }
+
+ if ("test1.xml".equals(entry.getName())) {
+ aos.putArchiveEntry(entry);
+ }
+ }
+ ais.close();
+ aos.close();
+ is.close();
+ os.close();
+ }
+
+
+ long sum = 0;
+
+ {
+ final InputStream is = new FileInputStream(output2);
+ final ArchiveInputStream ais = new
ArchiveStreamFactory().createArchiveInputStream(is);
+ while(true) {
+ final ArArchiveEntry entry =
(ArArchiveEntry)ais.getNextEntry();
+ if (entry == null) {
+ break;
+ }
+
+ final ByteArrayOutputStream os = new
ByteArrayOutputStream();
+ IOUtils.copy(ais, os);
+
+ sum += entry.getLength();
+ }
+ ais.close();
+ is.close();
+ }
+
+ assertEquals(0, sum);
+
+ }
+
}