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


Reply via email to