You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2009/03/02 16:18:47 UTC
svn commit: r749332 - in /commons/sandbox/compress/trunk/src:
main/java/org/apache/commons/compress/changes/ChangeSet.java
test/java/org/apache/commons/compress/AbstractTestCase.java
test/java/org/apache/commons/compress/changes/ChangeSetTestCase.java
Author: bodewig
Date: Mon Mar 2 15:18:45 2009
New Revision: 749332
URL: http://svn.apache.org/viewvc?rev=749332&view=rev
Log:
Improved Changeset support with re-enabled tests, submitted by Christian Grobmeier, SANDBOX-183
Modified:
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSet.java
commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/AbstractTestCase.java
commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/changes/ChangeSetTestCase.java
Modified: commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSet.java
URL: http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSet.java?rev=749332&r1=749331&r2=749332&view=diff
==============================================================================
--- commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSet.java (original)
+++ commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSet.java Mon Mar 2 15:18:45 2009
@@ -20,6 +20,7 @@
import java.io.IOException;
import java.io.InputStream;
+import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
@@ -29,58 +30,112 @@
import org.apache.commons.compress.archivers.ArchiveOutputStream;
import org.apache.commons.compress.utils.IOUtils;
-
public final class ChangeSet {
- private final Set changes = new LinkedHashSet();
-
- public void delete( final String pFilename ) {
- changes.add(new Change(pFilename));
- }
-
-// public void move( final String pFrom, final String pTo ) {
-// changes.add(new Change(pFrom, pTo));
-// }
-
- public void add( final ArchiveEntry pEntry, final InputStream pInput) {
- changes.add(new Change(pEntry, pInput));
- }
-
- public Set asSet() {
- return changes;
- }
-
- public void perform(ArchiveInputStream in, ArchiveOutputStream out) throws IOException {
- ArchiveEntry entry = null;
- while((entry = in.getNextEntry()) != null) {
- boolean copy = true;
-
- for (Iterator it = changes.iterator(); it.hasNext();) {
- Change change = (Change)it.next();
-
- if(change.type() == Change.TYPE_ADD) {
- copyStream(change.getInput(), out, change.getEntry());
- it.remove();
- }
-
- if( change.type() == Change.TYPE_DELETE &&
- entry.getName() != null &&
- entry.getName().equals(change.targetFile())) {
- copy = false;
- it.remove();
- break;
- }
- }
-
- if(copy) {
- copyStream(in, out, entry);
- }
- }
- }
-
- private static void copyStream(InputStream in, ArchiveOutputStream out, ArchiveEntry entry) throws IOException {
- out.putArchiveEntry(entry);
- IOUtils.copy(in, out);
- out.closeArchiveEntry();
- }
+ private final Set changes = Collections
+ .synchronizedSet(new LinkedHashSet());;
+
+ public void delete(final String pFilename) {
+ addDeletion(new Change(pFilename));
+ }
+
+ // public void move( final String pFrom, final String pTo ) {
+ // changes.add(new Change(pFrom, pTo));
+ // }
+
+ public void add(final ArchiveEntry pEntry, final InputStream pInput) {
+ changes.add(new Change(pEntry, pInput));
+ }
+
+ public Set asSet() {
+ return changes;
+ }
+
+ public void perform(ArchiveInputStream in, ArchiveOutputStream out)
+ throws IOException {
+ ArchiveEntry entry = null;
+ while ((entry = in.getNextEntry()) != null) {
+ boolean copy = true;
+
+ for (Iterator it = changes.iterator(); it.hasNext();) {
+ Change change = (Change) it.next();
+
+ if (change.type() == Change.TYPE_ADD) {
+ copyStream(change.getInput(), out, change.getEntry());
+ it.remove();
+ }
+
+ if (change.type() == Change.TYPE_DELETE
+ && entry.getName() != null) {
+ if (entry.getName().equals(change.targetFile())) {
+ copy = false;
+ it.remove();
+ break;
+ } else if (entry.getName().matches(
+ change.targetFile() + "/.*")) {
+ copy = false;
+ break;
+ }
+ }
+ }
+
+ if (copy) {
+ if (!isDeletedLater(entry)) {
+ copyStream(in, out, entry);
+ }
+ }
+ }
+ }
+
+ private void addDeletion(Change pChange) {
+ if (Change.TYPE_DELETE != pChange.type()
+ || pChange.targetFile() == null) {
+ return;
+ }
+ String source = pChange.targetFile();
+
+ if (!changes.isEmpty()) {
+ for (Iterator it = changes.iterator(); it.hasNext();) {
+ Change change = (Change) it.next();
+ if (change.type() == Change.TYPE_ADD
+ && change.getEntry() != null) {
+ String target = change.getEntry().getName();
+
+ if (source.equals(target)) {
+ it.remove();
+ } else if (target.matches(source + "/.*")) {
+ it.remove();
+ }
+ }
+ }
+ }
+ changes.add(pChange);
+ }
+
+ private boolean isDeletedLater(ArchiveEntry entry) {
+ String source = entry.getName();
+
+ if (!changes.isEmpty()) {
+ for (Iterator it = changes.iterator(); it.hasNext();) {
+ Change change = (Change) it.next();
+ if (change.type() == Change.TYPE_DELETE) {
+ String target = change.targetFile();
+
+ if (source.equals(target)) {
+ return true;
+ }
+
+ return source.matches(target + "/.*");
+ }
+ }
+ }
+ return false;
+ }
+
+ private static void copyStream(InputStream in, ArchiveOutputStream out,
+ ArchiveEntry entry) throws IOException {
+ out.putArchiveEntry(entry);
+ IOUtils.copy(in, out);
+ out.closeArchiveEntry();
+ }
}
Modified: commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/AbstractTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/AbstractTestCase.java?rev=749332&r1=749331&r2=749332&view=diff
==============================================================================
--- commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/AbstractTestCase.java (original)
+++ commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/AbstractTestCase.java Mon Mar 2 15:18:45 2009
@@ -27,6 +27,7 @@
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
+import java.util.Iterator;
import java.util.List;
import junit.framework.TestCase;
@@ -50,7 +51,7 @@
addURL(new File("src/test/resources").toURL());
}
- protected File getFile( String path ) {
+ protected File getFile(String path) {
return new File(getClass().getClassLoader().getResource(path).getFile());
}
@@ -60,25 +61,29 @@
}
/**
- * Adds a URL to the classpath. This method is necessary when running
- * junit tests from within eclipse.
- * @param url the url to add
- * @throws Exception if an error occurs
+ * Adds a URL to the classpath. This method is necessary when running junit
+ * tests from within eclipse.
+ *
+ * @param url
+ * the url to add
+ * @throws Exception
+ * if an error occurs
*/
public void addURL(URL url) throws Exception {
- URLClassLoader classLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
+ URLClassLoader classLoader = (URLClassLoader) ClassLoader
+ .getSystemClassLoader();
Class clazz = URLClassLoader.class;
- Method method= clazz.getDeclaredMethod("addURL", new Class[] { URL.class });
+ Method method = clazz.getDeclaredMethod("addURL",
+ new Class[] { URL.class });
method.setAccessible(true);
method.invoke(classLoader, new Object[] { url });
}
/**
- * Creates an archive of 5 textbased files in several directories.
- * The archivername is the factory identifier for the archiver, for example
- * zip, tar, cpio, jar, ar.
- * The archive is created as a temp file.
+ * Creates an archive of 5 textbased files in several directories. The
+ * archivername is the factory identifier for the archiver, for example zip,
+ * tar, cpio, jar, ar. The archive is created as a temp file.
*
* The archive contains the following files:
* <ul>
@@ -91,9 +96,11 @@
* <li>test with spaces.txt</li>
* </ul>
*
- * @param archivename the identifier of this archive
+ * @param archivename
+ * the identifier of this archive
* @return the newly created file
- * @throws Exception in case something goes wrong
+ * @throws Exception
+ * in case something goes wrong
*/
protected File createArchive(String archivename) throws Exception {
ArchiveOutputStream out = null;
@@ -101,7 +108,8 @@
File temp = File.createTempFile("test", "." + archivename);
final OutputStream stream = new FileOutputStream(temp);
- out = new ArchiveStreamFactory().createArchiveOutputStream(archivename, stream);
+ out = new ArchiveStreamFactory().createArchiveOutputStream(
+ archivename, stream);
final File file1 = getFile("test1.xml");
final File file2 = getFile("test2.xml");
@@ -116,67 +124,108 @@
IOUtils.copy(new FileInputStream(file1), out);
out.closeArchiveEntry();
- out.putArchiveEntry(new ZipArchiveEntry("testdata/test2.xml"));
+ entry = new ZipArchiveEntry("testdata/test2.xml");
+ entry.setSize(file1.length());
+ out.putArchiveEntry(entry);
IOUtils.copy(new FileInputStream(file2), out);
out.closeArchiveEntry();
- out.putArchiveEntry(new ZipArchiveEntry("test/test3.xml"));
+ entry = new ZipArchiveEntry("test/test3.xml");
+ entry.setSize(file1.length());
+ out.putArchiveEntry(entry);
IOUtils.copy(new FileInputStream(file3), out);
out.closeArchiveEntry();
- out.putArchiveEntry(new ZipArchiveEntry("bla/test4.xml"));
+ entry = new ZipArchiveEntry("bla/test4.xml");
+ entry.setSize(file1.length());
+ out.putArchiveEntry(entry);
+ IOUtils.copy(new FileInputStream(file4), out);
+ out.closeArchiveEntry();
+
+ entry = new ZipArchiveEntry("bla/test5.xml");
+ entry.setSize(file1.length());
+ out.putArchiveEntry(entry);
+ IOUtils.copy(new FileInputStream(file4), out);
+ out.closeArchiveEntry();
+
+ entry = new ZipArchiveEntry("bla/blubber/test6.xml");
+ entry.setSize(file1.length());
+ out.putArchiveEntry(entry);
IOUtils.copy(new FileInputStream(file4), out);
out.closeArchiveEntry();
- out.putArchiveEntry(new ZipArchiveEntry("test.txt"));
+ entry = new ZipArchiveEntry("test.txt");
+ entry.setSize(file1.length());
+ out.putArchiveEntry(entry);
IOUtils.copy(new FileInputStream(file5), out);
out.closeArchiveEntry();
- out.putArchiveEntry(new ZipArchiveEntry("something/bla"));
+ entry = new ZipArchiveEntry("something/bla");
+ entry.setSize(file1.length());
+ out.putArchiveEntry(entry);
IOUtils.copy(new FileInputStream(file6), out);
out.closeArchiveEntry();
- out.putArchiveEntry(new ZipArchiveEntry("test with spaces.txt"));
+ entry = new ZipArchiveEntry("test with spaces.txt");
+ entry.setSize(file1.length());
+ out.putArchiveEntry(entry);
IOUtils.copy(new FileInputStream(file6), out);
out.closeArchiveEntry();
return temp;
} finally {
- if(out != null) out.close();
+ if (out != null)
+ out.close();
}
}
/**
* Checks if an archive contains all expected files.
*
- * @param archive
- * the archive to check
- * @param expected
- * a list with expected string filenames
+ * @param archive
+ * the archive to check
+ * @param expected
+ * a list with expected string filenames
* @throws Exception
*/
- protected void checkArchiveContent(File archive, List expected)
- throws Exception {
+ protected void checkArchiveContent(File archive, List expected)
+ throws Exception {
final InputStream is = new FileInputStream(archive);
final BufferedInputStream buf = new BufferedInputStream(is);
- final ArchiveInputStream in = new ArchiveStreamFactory().createArchiveInputStream(buf);
+ final ArchiveInputStream in = new ArchiveStreamFactory()
+ .createArchiveInputStream(buf);
+ this.checkArchiveContent(in, expected);
+ }
+ protected void checkArchiveContent(ArchiveInputStream in, List expected)
+ throws Exception {
File result = File.createTempFile("dir-result", "");
result.delete();
result.mkdir();
ArchiveEntry entry = null;
- while((entry = in.getNextEntry()) != null) {
- File outfile = new File(result.getCanonicalPath() + "/result/" + entry.getName());
+ while ((entry = in.getNextEntry()) != null) {
+ File outfile = new File(result.getCanonicalPath() + "/result/"
+ + entry.getName());
outfile.getParentFile().mkdirs();
OutputStream out = new FileOutputStream(outfile);
- if(!expected.remove(entry.getName())) {
- fail("unexpected entry: " + entry.getName());
- }
IOUtils.copy(in, out);
out.close();
+
+ if (!outfile.exists()) {
+ fail("extraction failed: " + entry.getName());
+ }
+ if (!expected.remove(entry.getName())) {
+ fail("unexpected entry: " + entry.getName());
+ }
}
in.close();
- assertEquals(expected.size(), 0);
+ if (expected.size() > 0) {
+ for (Iterator iterator = expected.iterator(); iterator.hasNext();) {
+ String name = (String) iterator.next();
+ fail("Expected entry: " + name);
+ }
+ }
+ assertEquals(0, expected.size());
}
}
Modified: commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/changes/ChangeSetTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/changes/ChangeSetTestCase.java?rev=749332&r1=749331&r2=749332&view=diff
==============================================================================
--- commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/changes/ChangeSetTestCase.java (original)
+++ commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/changes/ChangeSetTestCase.java Mon Mar 2 15:18:45 2009
@@ -40,15 +40,14 @@
*/
public final class ChangeSetTestCase extends AbstractTestCase {
/**
- * Tries to delete the folder "bla" from a zip file.
- * This should result in the deletion of bla/*, which
- * actually means bla/test4.xml should be removed from this zipfile.
- * The file something/bla (without ending, named like the folder) should
- * not be deleted.
+ * Tries to delete the folder "bla" from a zip file. This should result in
+ * the deletion of bla/*, which actually means bla/test4.xml should be
+ * removed from this zipfile. The file something/bla (without ending, named
+ * like the folder) should not be deleted.
*
* @throws Exception
*/
- public void XtestDeleteDir() throws Exception {
+ public void testDeleteDir() throws Exception {
File input = this.createArchive("zip");
ArchiveOutputStream out = null;
@@ -57,17 +56,21 @@
try {
final InputStream is = new FileInputStream(input);
- ais = new ArchiveStreamFactory().createArchiveInputStream("zip", is);
+ ais = new ArchiveStreamFactory()
+ .createArchiveInputStream("zip", is);
- out = new ArchiveStreamFactory().createArchiveOutputStream("zip", new FileOutputStream(result));
+ out = new ArchiveStreamFactory().createArchiveOutputStream("zip",
+ new FileOutputStream(result));
ChangeSet changes = new ChangeSet();
changes.delete("bla");
changes.perform(ais, out);
} finally {
- if(out != null) out.close();
- if(ais != null) ais.close();
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
}
List expected = new ArrayList();
@@ -82,13 +85,12 @@
}
/**
- * Tries to delete a directory with a file and adds
- * a new directory with a new file and with the same name.
- * Should delete dir1/* and add dir1/test.txt at the end
+ * Tries to delete the file "bla/test5.xml" from a zip file. This should
+ * result in the deletion of "bla/test5.xml".
*
* @throws Exception
*/
- public void XtestDeletePlusAdd() throws Exception {
+ public void testDeleteFile() throws Exception {
File input = this.createArchive("zip");
ArchiveOutputStream out = null;
@@ -97,8 +99,55 @@
try {
final InputStream is = new FileInputStream(input);
- ais = new ArchiveStreamFactory().createArchiveInputStream("zip", is);
- out = new ArchiveStreamFactory().createArchiveOutputStream("zip", new FileOutputStream(result));
+ ais = new ArchiveStreamFactory()
+ .createArchiveInputStream("zip", is);
+
+ out = new ArchiveStreamFactory().createArchiveOutputStream("zip",
+ new FileOutputStream(result));
+
+ ChangeSet changes = new ChangeSet();
+ changes.delete("bla/test5.xml");
+ changes.perform(ais, out);
+
+ } finally {
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
+ }
+
+ List expected = new ArrayList();
+ expected.add("testdata/test1.xml");
+ expected.add("testdata/test2.xml");
+ expected.add("test/test3.xml");
+ expected.add("test.txt");
+ expected.add("something/bla");
+ expected.add("test with spaces.txt");
+ expected.add("bla/test4.xml");
+ expected.add("bla/blubber/test6.xml");
+ this.checkArchiveContent(result, expected);
+ }
+
+ /**
+ * Tries to delete a directory with a file and adds a new directory with a
+ * new file and with the same name. Should delete dir1/* and add
+ * dir1/test.txt at the end
+ *
+ * @throws Exception
+ */
+ public void testDeletePlusAdd() throws Exception {
+ File input = this.createArchive("zip");
+
+ ArchiveOutputStream out = null;
+ ArchiveInputStream ais = null;
+ File result = File.createTempFile("test", ".zip");
+ try {
+
+ final InputStream is = new FileInputStream(input);
+ ais = new ArchiveStreamFactory()
+ .createArchiveInputStream("zip", is);
+ out = new ArchiveStreamFactory().createArchiveOutputStream("zip",
+ new FileOutputStream(result));
ChangeSet changes = new ChangeSet();
changes.delete("bla");
@@ -111,8 +160,10 @@
changes.perform(ais, out);
} finally {
- if(out != null) out.close();
- if(ais != null) ais.close();
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
}
List expected = new ArrayList();
@@ -129,9 +180,10 @@
/**
* Adds a file to a zip archive. Deletes an other file.
+ *
* @throws Exception
*/
- public void XtestDeleteFromAndAddToZip() throws Exception {
+ public void testDeleteFromAndAddToZip() throws Exception {
File input = this.createArchive("zip");
ArchiveOutputStream out = null;
@@ -140,8 +192,10 @@
try {
final InputStream is = new FileInputStream(input);
- ais = new ArchiveStreamFactory().createArchiveInputStream("zip", is);
- out = new ArchiveStreamFactory().createArchiveOutputStream("zip", new FileOutputStream(result));
+ ais = new ArchiveStreamFactory()
+ .createArchiveInputStream("zip", is);
+ out = new ArchiveStreamFactory().createArchiveOutputStream("zip",
+ new FileOutputStream(result));
ChangeSet changes = new ChangeSet();
@@ -154,14 +208,18 @@
changes.perform(ais, out);
} finally {
- if(out != null) out.close();
- if(ais != null) ais.close();
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
}
List expected = new ArrayList();
expected.add("testdata/test2.xml");
expected.add("test/test3.xml");
expected.add("blub/test.txt");
+ expected.add("bla/test5.xml");
+ expected.add("bla/blubber/test6.xml");
expected.add("test.txt");
expected.add("something/bla");
expected.add("bla/test4.xml");
@@ -171,12 +229,12 @@
}
/**
- * add blub/test.txt + delete blub
- * Should add dir1/test.txt and delete it afterwards. In this example,
- * the zip archive should stay untouched.
+ * add blub/test.txt + delete blub Should add dir1/test.txt and delete it
+ * afterwards. In this example, the zip archive should stay untouched.
+ *
* @throws Exception
*/
- public void XtestAddDeleteAdd() throws Exception {
+ public void testAddDeleteAdd() throws Exception {
File input = this.createArchive("zip");
ArchiveOutputStream out = null;
@@ -185,8 +243,10 @@
try {
final InputStream is = new FileInputStream(input);
- ais = new ArchiveStreamFactory().createArchiveInputStream("zip", is);
- out = new ArchiveStreamFactory().createArchiveOutputStream("zip", new FileOutputStream(result));
+ ais = new ArchiveStreamFactory()
+ .createArchiveInputStream("zip", is);
+ out = new ArchiveStreamFactory().createArchiveOutputStream("zip",
+ new FileOutputStream(result));
ChangeSet changes = new ChangeSet();
@@ -199,8 +259,10 @@
changes.perform(ais, out);
} finally {
- if(out != null) out.close();
- if(ais != null) ais.close();
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
}
List expected = new ArrayList();
@@ -208,6 +270,8 @@
expected.add("testdata/test2.xml");
expected.add("test/test3.xml");
expected.add("test.txt");
+ expected.add("bla/test5.xml");
+ expected.add("bla/blubber/test6.xml");
expected.add("something/bla");
expected.add("bla/test4.xml");
expected.add("test with spaces.txt");
@@ -215,14 +279,13 @@
this.checkArchiveContent(result, expected);
}
-
/**
- * delete bla + add bla/test.txt + delete bla
- * Deletes dir1/* first, then surpresses the add of bla.txt cause there
- * is a delete operation later.
+ * delete bla + add bla/test.txt + delete bla Deletes dir1/* first, then
+ * surpresses the add of bla.txt cause there is a delete operation later.
+ *
* @throws Exception
*/
- public void XtestDeleteAddDelete() throws Exception {
+ public void testDeleteAddDelete() throws Exception {
File input = this.createArchive("zip");
ArchiveOutputStream out = null;
@@ -231,8 +294,10 @@
try {
final InputStream is = new FileInputStream(input);
- ais = new ArchiveStreamFactory().createArchiveInputStream("zip", is);
- out = new ArchiveStreamFactory().createArchiveOutputStream("zip", new FileOutputStream(result));
+ ais = new ArchiveStreamFactory()
+ .createArchiveInputStream("zip", is);
+ out = new ArchiveStreamFactory().createArchiveOutputStream("zip",
+ new FileOutputStream(result));
ChangeSet changes = new ChangeSet();
@@ -247,8 +312,10 @@
changes.perform(ais, out);
} finally {
- if(out != null) out.close();
- if(ais != null) ais.close();
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
}
List expected = new ArrayList();
@@ -264,119 +331,123 @@
/**
* Simple Delete from a zip file.
+ *
* @throws Exception
*/
public void testDeleteFromZip() throws Exception {
ArchiveOutputStream out = null;
ArchiveInputStream ais = null;
+ File temp = null;
try {
ChangeSet changes = new ChangeSet();
changes.delete("test2.xml");
final File input = getFile("bla.zip");
final InputStream is = new FileInputStream(input);
- ais = new ArchiveStreamFactory().createArchiveInputStream("zip", is);
+ ais = new ArchiveStreamFactory()
+ .createArchiveInputStream("zip", is);
- File temp = File.createTempFile("test", ".zip");
- out = new ArchiveStreamFactory().createArchiveOutputStream("zip", new FileOutputStream(temp));
+ temp = File.createTempFile("test", ".zip");
+ out = new ArchiveStreamFactory().createArchiveOutputStream("zip",
+ new FileOutputStream(temp));
changes.perform(ais, out);
} finally {
- if(out != null) out.close();
- if(ais != null) ais.close();
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
}
- // TODO add asserts
+
+ List expected = new ArrayList();
+ expected.add("test1.xml");
+
+ this.checkArchiveContent(temp, expected);
}
/**
* Simple delete from a tar file
+ *
* @throws Exception
*/
public void testDeleteFromTar() throws Exception {
ArchiveOutputStream out = null;
ArchiveInputStream ais = null;
+ File temp = null;
try {
ChangeSet changes = new ChangeSet();
changes.delete("test2.xml");
final File input = getFile("bla.tar");
final InputStream is = new FileInputStream(input);
- ais = new ArchiveStreamFactory().createArchiveInputStream("tar", is);
+ ais = new ArchiveStreamFactory()
+ .createArchiveInputStream("tar", is);
- File temp = new File(dir, "bla.tar");
- out = new ArchiveStreamFactory().createArchiveOutputStream("tar", new FileOutputStream(temp));
+ temp = new File(dir, "bla.tar");
+ out = new ArchiveStreamFactory().createArchiveOutputStream("tar",
+ new FileOutputStream(temp));
changes.perform(ais, out);
} finally {
- if(out != null) out.close();
- if(ais != null) ais.close();
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
}
- // TODO add asserts
+ List expected = new ArrayList();
+ expected.add("test1.xml");
+ this.checkArchiveContent(temp, expected);
}
/**
* Simple delete from a jar file
+ *
* @throws Exception
*/
public void testDeleteFromJar() throws Exception {
ArchiveOutputStream out = null;
ArchiveInputStream ais = null;
+ File temp = null;
try {
ChangeSet changes = new ChangeSet();
changes.delete("test2.xml");
- changes.delete("META-INF/MANIFEST.MF");
+ changes.delete("META-INF");
+ changes.delete(".classpath");
+ changes.delete(".project");
final File input = getFile("bla.jar");
final InputStream is = new FileInputStream(input);
- ais = new ArchiveStreamFactory().createArchiveInputStream("jar", is);
+ ais = new ArchiveStreamFactory()
+ .createArchiveInputStream("jar", is);
- File temp = new File(dir, "bla.jar");
- out = new ArchiveStreamFactory().createArchiveOutputStream("jar", new FileOutputStream(temp));
+ temp = new File(dir, "bla.jar");
+ out = new ArchiveStreamFactory().createArchiveOutputStream("jar",
+ new FileOutputStream(temp));
changes.perform(ais, out);
} finally {
- if(out != null) out.close();
- if(ais != null) ais.close();
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
}
- // TODO add asserts
- }
-
- /**
- * Simple delete from an ar file
- * @throws Exception
- */
- public void testDeleteFromAr() throws Exception {
- ArchiveOutputStream out = null;
- ArchiveInputStream ais = null;
- try {
- ChangeSet changes = new ChangeSet();
- changes.delete("test2.xml");
-
- final File input = getFile("bla.ar");
- final InputStream is = new FileInputStream(input);
- ais = new ArchiveStreamFactory().createArchiveInputStream("ar", is);
-
- File temp = new File(dir, "bla.ar");
- out = new ArchiveStreamFactory().createArchiveOutputStream("ar", new FileOutputStream(temp));
-
- changes.perform(ais, out);
- } finally {
- if(out != null) out.close();
- if(ais != null) ais.close();
- }
- // TODO add asserts
+ List expected = new ArrayList();
+ expected.add("test1.xml");
+ this.checkArchiveContent(temp, expected);
}
public void testDeleteFromAndAddToTar() throws Exception {
ArchiveOutputStream out = null;
ArchiveInputStream ais = null;
+ File temp = null;
try {
ChangeSet changes = new ChangeSet();
changes.delete("test2.xml");
final File file1 = getFile("test.txt");
- final TarArchiveEntry entry = new TarArchiveEntry("testdata/test.txt");
+ final TarArchiveEntry entry = new TarArchiveEntry(
+ "testdata/test.txt");
entry.setModTime(0);
entry.setSize(file1.length());
entry.setUserId(0);
@@ -389,29 +460,44 @@
final File input = getFile("bla.tar");
final InputStream is = new FileInputStream(input);
- ais = new ArchiveStreamFactory().createArchiveInputStream("tar", is);
+ ais = new ArchiveStreamFactory()
+ .createArchiveInputStream("tar", is);
- File temp = new File(dir, "bla.tar");
- out = new ArchiveStreamFactory().createArchiveOutputStream("tar", new FileOutputStream(temp));
+ temp = new File(dir, "bla.tar");
+ out = new ArchiveStreamFactory().createArchiveOutputStream("tar",
+ new FileOutputStream(temp));
changes.perform(ais, out);
} finally {
- if(out != null) out.close();
- if(ais != null) ais.close();
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
}
- // TODO add asserts
+ List expected = new ArrayList();
+ expected.add("test1.xml");
+ expected.add("testdata/test.txt");
+ // TODO: automatic detection of TAR archive temp fails here
+ final ArchiveInputStream in = new ArchiveStreamFactory()
+ .createArchiveInputStream("tar", new FileInputStream(temp));
+ this.checkArchiveContent(in, expected);
}
/**
* Delete from a jar file and add another file
+ *
* @throws Exception
*/
public void testDeleteFromAndAddToJar() throws Exception {
ArchiveOutputStream out = null;
ArchiveInputStream ais = null;
+ File temp = null;
try {
ChangeSet changes = new ChangeSet();
changes.delete("test2.xml");
+ changes.delete("META-INF");
+ changes.delete(".classpath");
+ changes.delete(".project");
final File file1 = getFile("test.txt");
JarArchiveEntry entry = new JarArchiveEntry("testdata/test.txt");
@@ -419,33 +505,79 @@
final File input = getFile("bla.jar");
final InputStream is = new FileInputStream(input);
- ais = new ArchiveStreamFactory().createArchiveInputStream("jar", is);
+ ais = new ArchiveStreamFactory()
+ .createArchiveInputStream("jar", is);
+
+ temp = new File(dir, "bla.jar");
+ out = new ArchiveStreamFactory().createArchiveOutputStream("jar",
+ new FileOutputStream(temp));
+
+ changes.perform(ais, out);
+ } finally {
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
+ }
+ List expected = new ArrayList();
+ expected.add("test1.xml");
+ expected.add("testdata/test.txt");
+ this.checkArchiveContent(temp, expected);
+ }
+
+ /**
+ * Simple delete from an ar file
+ *
+ * @throws Exception
+ */
+ public void XtestDeleteFromAr() throws Exception {
+ ArchiveOutputStream out = null;
+ ArchiveInputStream ais = null;
+ File temp = null;
+ try {
+ ChangeSet changes = new ChangeSet();
+ changes.delete("test2.xml");
+
+ final File input = getFile("bla.ar");
+ final InputStream is = new FileInputStream(input);
+ ais = new ArchiveStreamFactory().createArchiveInputStream("ar", is);
- File temp = new File(dir, "bla.jar");
- out = new ArchiveStreamFactory().createArchiveOutputStream("jar", new FileOutputStream(temp));
+ temp = new File(dir, "bla.ar");
+ out = new ArchiveStreamFactory().createArchiveOutputStream("ar",
+ new FileOutputStream(temp));
changes.perform(ais, out);
} finally {
- if(out != null) out.close();
- if(ais != null) ais.close();
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
}
- // TODO add asserts
+
+ // TODO: check ar file. getNextEntry returns null, but ar -t tempfile.ar
+ // shows still two files
+ List expected = new ArrayList();
+ expected.add("test1.xml");
+ this.checkArchiveContent(temp, expected);
}
/**
* Deletes a file from an AR-archive and adds another
+ *
* @throws Exception
*/
- public void testDeleteFromAndAddToAr() throws Exception {
+ public void XtestDeleteFromAndAddToAr() throws Exception {
ArchiveOutputStream out = null;
ArchiveInputStream ais = null;
+ File temp = null;
try {
ChangeSet changes = new ChangeSet();
changes.delete("test2.xml");
final File file1 = getFile("test.txt");
- final ArArchiveEntry entry = new ArArchiveEntry("test.txt", file1.length());
+ final ArArchiveEntry entry = new ArArchiveEntry("test.txt", file1
+ .length());
changes.add(entry, new FileInputStream(file1));
@@ -453,22 +585,30 @@
final InputStream is = new FileInputStream(input);
ais = new ArchiveStreamFactory().createArchiveInputStream("ar", is);
- File temp = new File(dir, "bla.ar");
- out = new ArchiveStreamFactory().createArchiveOutputStream("ar", new FileOutputStream(temp));
+ temp = new File(dir, "bla.ar");
+ out = new ArchiveStreamFactory().createArchiveOutputStream("ar",
+ new FileOutputStream(temp));
changes.perform(ais, out);
} finally {
- if(out != null) out.close();
- if(ais != null) ais.close();
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
}
- // TODO add asserts
+ System.out.println(temp.getAbsolutePath());
+ List expected = new ArrayList();
+ expected.add("test1.xml");
+ expected.add("test.txt");
+ this.checkArchiveContent(temp, expected);
}
/**
* TODO: Move operations are not supported currently
*
- * mv dir1/test.text dir2/test.txt + delete dir1
- * Moves the file to dir2 and deletes everything in dir1
+ * mv dir1/test.text dir2/test.txt + delete dir1 Moves the file to dir2 and
+ * deletes everything in dir1
+ *
* @throws Exception
*/
public void testRenameAndDelete() throws Exception {