Author: bodewig
Date: Tue Oct 22 04:51:39 2013
New Revision: 1534491
URL: http://svn.apache.org/r1534491
Log:
another edge case for delaying stream creation and more tests
Added:
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntryTest.java
(with props)
Modified:
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFileTest.java
Modified:
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java?rev=1534491&r1=1534490&r2=1534491&view=diff
==============================================================================
---
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java
(original)
+++
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java
Tue Oct 22 04:51:39 2013
@@ -161,7 +161,7 @@ public class SevenZOutputFile {
* @throws IOException on error
*/
public void write(final byte[] b) throws IOException {
- getCurrentOutputStream().write(b);
+ write(b, 0, b.length);
}
/**
@@ -172,7 +172,9 @@ public class SevenZOutputFile {
* @throws IOException on error
*/
public void write(final byte[] b, final int off, final int len) throws
IOException {
- getCurrentOutputStream().write(b, off, len);
+ if (len > 0) {
+ getCurrentOutputStream().write(b, off, len);
+ }
}
/**
Added:
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntryTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntryTest.java?rev=1534491&view=auto
==============================================================================
---
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntryTest.java
(added)
+++
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntryTest.java
Tue Oct 22 04:51:39 2013
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.commons.compress.archivers.sevenz;
+
+import org.junit.Test;
+
+public class SevenZArchiveEntryTest {
+
+ @Test(expected=UnsupportedOperationException.class)
+ public void shouldThrowIfNoLastModifiedDateIsSet() {
+ new SevenZArchiveEntry().getLastModifiedDate();
+ }
+
+ @Test(expected=UnsupportedOperationException.class)
+ public void shouldThrowIfNoCreationDateIsSet() {
+ new SevenZArchiveEntry().getCreationDate();
+ }
+
+ @Test(expected=UnsupportedOperationException.class)
+ public void shouldThrowIfNoAccessDateIsSet() {
+ new SevenZArchiveEntry().getAccessDate();
+ }
+
+}
Propchange:
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntryTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java?rev=1534491&r1=1534490&r2=1534491&view=diff
==============================================================================
---
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
(original)
+++
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
Tue Oct 22 04:51:39 2013
@@ -18,6 +18,7 @@
package org.apache.commons.compress.archivers.sevenz;
import java.io.File;
+import java.io.IOException;
import org.apache.commons.compress.AbstractTestCase;
public class SevenZFileTest extends AbstractTestCase {
@@ -57,6 +58,16 @@ public class SevenZFileTest extends Abst
test7zUnarchive(f, null);
}
+ public void testEncryptedArchiveRequiresPassword() throws Exception {
+ try {
+ SevenZFile sevenZFile = new
SevenZFile(getFile("bla.encrypted.7z"));
+ fail("shouldn't decrypt without a password");
+ } catch (IOException ex) {
+ assertEquals("Cannot read encrypted files without a password",
+ ex.getMessage());
+ }
+ }
+
private void test7zUnarchive(File f, byte[] password) throws Exception {
SevenZFile sevenZFile = new SevenZFile(f, password);
try {
Modified:
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFileTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFileTest.java?rev=1534491&r1=1534490&r2=1534491&view=diff
==============================================================================
---
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFileTest.java
(original)
+++
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFileTest.java
Tue Oct 22 04:51:39 2013
@@ -18,6 +18,7 @@
package org.apache.commons.compress.archivers.sevenz;
import java.io.File;
+import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.compress.AbstractTestCase;
@@ -67,8 +68,11 @@ public class SevenZOutputFileTest extend
entry = new SevenZArchiveEntry();
entry.setName("dada");
+ entry.setHasWindowsAttributes(true);
+ entry.setWindowsAttributes(17);
outArchive.putArchiveEntry(entry);
outArchive.write(5);
+ outArchive.write(42);
outArchive.closeArchiveEntry();
outArchive.finish();
@@ -111,8 +115,12 @@ public class SevenZOutputFileTest extend
entry = archive.getNextEntry();
assert(entry != null);
assertEquals("dada", entry.getName());
- assertEquals(1, entry.getSize());
- assertEquals(5, archive.read());
+ assertEquals(2, entry.getSize());
+ byte[] content = new byte[2];
+ assertEquals(2, archive.read(content));
+ assertEquals(5, content[0]);
+ assertEquals(42, content[1]);
+ assertEquals(17, entry.getWindowsAttributes());
assert(archive.getNextEntry() == null);
} finally {
@@ -121,4 +129,46 @@ public class SevenZOutputFileTest extend
}
+ public void testDirectoriesOnly() throws Exception {
+ File output = new File(dir, "dirs.7z");
+ SevenZOutputFile outArchive = new SevenZOutputFile(output);
+ try {
+ SevenZArchiveEntry entry = new SevenZArchiveEntry();
+ entry.setName("foo/");
+ entry.setDirectory(true);
+ outArchive.putArchiveEntry(entry);
+ outArchive.closeArchiveEntry();
+ } finally {
+ outArchive.close();
+ }
+
+ final SevenZFile archive = new SevenZFile(output);
+ try {
+ SevenZArchiveEntry entry = archive.getNextEntry();
+ assert(entry != null);
+ assertEquals("foo/", entry.getName());
+ assertTrue(entry.isDirectory());
+ assertFalse(entry.isAntiItem());
+
+ assert(archive.getNextEntry() == null);
+ } finally {
+ archive.close();
+ }
+
+ }
+
+ public void testCantFinishTwice() throws Exception {
+ File output = new File(dir, "finish.7z");
+ SevenZOutputFile outArchive = new SevenZOutputFile(output);
+ try {
+ outArchive.finish();
+ outArchive.finish();
+ fail("shouldn't be able to call finish twice");
+ } catch (IOException ex) {
+ assertEquals("This archive has already been finished",
ex.getMessage());
+ } finally {
+ outArchive.close();
+ }
+ }
+
}