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 2018/08/09 16:13:16 UTC
commons-compress git commit: verify the compressor streams really
mean EOF when they say so
Repository: commons-compress
Updated Branches:
refs/heads/master 792da6735 -> 0fe6ae319
verify the compressor streams really mean EOF when they say so
Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/0fe6ae31
Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/0fe6ae31
Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/0fe6ae31
Branch: refs/heads/master
Commit: 0fe6ae319d50edd1389b6ecb5a6fd12f8091aea0
Parents: 792da67
Author: Stefan Bodewig <bo...@apache.org>
Authored: Thu Aug 9 18:12:52 2018 +0200
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Thu Aug 9 18:12:52 2018 +0200
----------------------------------------------------------------------
.../compress/compressors/GZipTestCase.java | 27 ++++++++++
.../compress/compressors/LZMATestCase.java | 27 ++++++++++
.../compress/compressors/Pack200TestCase.java | 42 ++++++++++++++++
.../brotli/BrotliCompressorInputStreamTest.java | 17 ++++++-
.../bzip2/BZip2CompressorInputStreamTest.java | 30 +++++++++++
.../DeflateCompressorInputStreamTest.java | 17 ++++++-
.../Deflate64CompressorInputStreamTest.java | 24 +++++++++
.../lz4/BlockLZ4CompressorInputStreamTest.java | 27 ++++++++++
.../lz4/FramedLZ4CompressorInputStreamTest.java | 27 ++++++++++
.../FramedSnappyCompressorInputStreamTest.java | 27 ++++++++++
.../xz/XZCompressorInputStreamTest.java | 53 ++++++++++++++++++++
.../z/ZCompressorInputStreamTest.java | 32 ++++++++++++
.../ZstdCompressorInputStreamTest.java | 17 ++++++-
13 files changed, 364 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0fe6ae31/src/test/java/org/apache/commons/compress/compressors/GZipTestCase.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/GZipTestCase.java b/src/test/java/org/apache/commons/compress/compressors/GZipTestCase.java
index 02fda3e..9faa874 100644
--- a/src/test/java/org/apache/commons/compress/compressors/GZipTestCase.java
+++ b/src/test/java/org/apache/commons/compress/compressors/GZipTestCase.java
@@ -279,4 +279,31 @@ public final class GZipTestCase extends AbstractTestCase {
assertEquals("test3.xml", readParams.getFilename());
assertEquals("Umlaute möglich?", readParams.getComment());
}
+
+ @Test
+ public void singleByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.tgz");
+ try (InputStream is = new FileInputStream(input)) {
+ final GzipCompressorInputStream in =
+ new GzipCompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read());
+ Assert.assertEquals(-1, in.read());
+ in.close();
+ }
+ }
+
+ @Test
+ public void multiByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.tgz");
+ byte[] buf = new byte[2];
+ try (InputStream is = new FileInputStream(input)) {
+ final GzipCompressorInputStream in =
+ new GzipCompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read(buf));
+ Assert.assertEquals(-1, in.read(buf));
+ in.close();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0fe6ae31/src/test/java/org/apache/commons/compress/compressors/LZMATestCase.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/LZMATestCase.java b/src/test/java/org/apache/commons/compress/compressors/LZMATestCase.java
index 622449d..3d2ab02 100644
--- a/src/test/java/org/apache/commons/compress/compressors/LZMATestCase.java
+++ b/src/test/java/org/apache/commons/compress/compressors/LZMATestCase.java
@@ -77,6 +77,33 @@ public final class LZMATestCase extends AbstractTestCase {
}
}
+ @Test
+ public void singleByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.tar.lzma");
+ try (InputStream is = new FileInputStream(input)) {
+ final LZMACompressorInputStream in =
+ new LZMACompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read());
+ Assert.assertEquals(-1, in.read());
+ in.close();
+ }
+ }
+
+ @Test
+ public void multiByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.tar.lzma");
+ byte[] buf = new byte[2];
+ try (InputStream is = new FileInputStream(input)) {
+ final LZMACompressorInputStream in =
+ new LZMACompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read(buf));
+ Assert.assertEquals(-1, in.read(buf));
+ in.close();
+ }
+ }
+
private void copy(final InputStream in, final File output) throws IOException {
FileOutputStream out = null;
try {
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0fe6ae31/src/test/java/org/apache/commons/compress/compressors/Pack200TestCase.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/Pack200TestCase.java b/src/test/java/org/apache/commons/compress/compressors/Pack200TestCase.java
index 1896d10..d346185 100644
--- a/src/test/java/org/apache/commons/compress/compressors/Pack200TestCase.java
+++ b/src/test/java/org/apache/commons/compress/compressors/Pack200TestCase.java
@@ -198,4 +198,46 @@ public final class Pack200TestCase extends AbstractTestCase {
os.close();
}
}
+
+ @Test
+ public void singleByteReadFromMemoryConsistentlyReturnsMinusOneAtEof() throws Exception {
+ singleByteReadConsistentlyReturnsMinusOneAtEof(Pack200Strategy.IN_MEMORY);
+ }
+
+ @Test
+ public void singleByteReadFromTempFileConsistentlyReturnsMinusOneAtEof() throws Exception {
+ singleByteReadConsistentlyReturnsMinusOneAtEof(Pack200Strategy.TEMP_FILE);
+ }
+
+ private void singleByteReadConsistentlyReturnsMinusOneAtEof(Pack200Strategy s) throws Exception {
+ final File input = getFile("bla.pack");
+ try (final Pack200CompressorInputStream in = new Pack200CompressorInputStream(input, s)) {
+ IOUtils.toByteArray(in);
+ assertEquals(-1, in.read());
+ assertEquals(-1, in.read());
+ in.close();
+ }
+ }
+
+ @Test
+ public void multiByteReadFromMemoryConsistentlyReturnsMinusOneAtEof() throws Exception {
+ multiByteReadConsistentlyReturnsMinusOneAtEof(Pack200Strategy.IN_MEMORY);
+ }
+
+ @Test
+ public void multiByteReadFromTempFileConsistentlyReturnsMinusOneAtEof() throws Exception {
+ multiByteReadConsistentlyReturnsMinusOneAtEof(Pack200Strategy.TEMP_FILE);
+ }
+
+ private void multiByteReadConsistentlyReturnsMinusOneAtEof(Pack200Strategy s) throws Exception {
+ final File input = getFile("bla.pack");
+ byte[] buf = new byte[2];
+ try (final Pack200CompressorInputStream in = new Pack200CompressorInputStream(input, s)) {
+ IOUtils.toByteArray(in);
+ assertEquals(-1, in.read(buf));
+ assertEquals(-1, in.read(buf));
+ in.close();
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0fe6ae31/src/test/java/org/apache/commons/compress/compressors/brotli/BrotliCompressorInputStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/brotli/BrotliCompressorInputStreamTest.java b/src/test/java/org/apache/commons/compress/compressors/brotli/BrotliCompressorInputStreamTest.java
index e26b637..721ab33 100644
--- a/src/test/java/org/apache/commons/compress/compressors/brotli/BrotliCompressorInputStreamTest.java
+++ b/src/test/java/org/apache/commons/compress/compressors/brotli/BrotliCompressorInputStreamTest.java
@@ -123,13 +123,28 @@ public class BrotliCompressorInputStreamTest extends AbstractTestCase {
}
@Test
- public void singleByteReadReturnsMinusOneAtEof() throws IOException {
+ public void singleByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
final File input = getFile("brotli.testdata.compressed");
try (InputStream is = new FileInputStream(input)) {
final BrotliCompressorInputStream in =
new BrotliCompressorInputStream(is);
IOUtils.toByteArray(in);
Assert.assertEquals(-1, in.read());
+ Assert.assertEquals(-1, in.read());
+ in.close();
+ }
+ }
+
+ @Test
+ public void multiByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("brotli.testdata.compressed");
+ byte[] buf = new byte[2];
+ try (InputStream is = new FileInputStream(input)) {
+ final BrotliCompressorInputStream in =
+ new BrotliCompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read(buf));
+ Assert.assertEquals(-1, in.read(buf));
in.close();
}
}
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0fe6ae31/src/test/java/org/apache/commons/compress/compressors/bzip2/BZip2CompressorInputStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/bzip2/BZip2CompressorInputStreamTest.java b/src/test/java/org/apache/commons/compress/compressors/bzip2/BZip2CompressorInputStreamTest.java
index 1d49102..7130d92 100644
--- a/src/test/java/org/apache/commons/compress/compressors/bzip2/BZip2CompressorInputStreamTest.java
+++ b/src/test/java/org/apache/commons/compress/compressors/bzip2/BZip2CompressorInputStreamTest.java
@@ -22,8 +22,11 @@ import static org.apache.commons.compress.AbstractTestCase.getFile;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
+import org.apache.commons.compress.utils.IOUtils;
import org.junit.Assert;
import org.junit.Test;
@@ -67,4 +70,31 @@ public class BZip2CompressorInputStreamTest {
bzipIn.close();
}
+ @Test
+ public void singleByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.txt.bz2");
+ try (InputStream is = new FileInputStream(input)) {
+ final BZip2CompressorInputStream in =
+ new BZip2CompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read());
+ Assert.assertEquals(-1, in.read());
+ in.close();
+ }
+ }
+
+ @Test
+ public void multiByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.txt.bz2");
+ byte[] buf = new byte[2];
+ try (InputStream is = new FileInputStream(input)) {
+ final BZip2CompressorInputStream in =
+ new BZip2CompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read(buf));
+ Assert.assertEquals(-1, in.read(buf));
+ in.close();
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0fe6ae31/src/test/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStreamTest.java b/src/test/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStreamTest.java
index 1d8261e..97a010f 100644
--- a/src/test/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStreamTest.java
+++ b/src/test/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStreamTest.java
@@ -65,13 +65,28 @@ public class DeflateCompressorInputStreamTest {
}
@Test
- public void singleByteReadReturnsMinusOneAtEof() throws IOException {
+ public void singleByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
final File input = AbstractTestCase.getFile("bla.tar.deflatez");
try (InputStream is = new FileInputStream(input)) {
final DeflateCompressorInputStream in =
new DeflateCompressorInputStream(is);
IOUtils.toByteArray(in);
Assert.assertEquals(-1, in.read());
+ Assert.assertEquals(-1, in.read());
+ in.close();
+ }
+ }
+
+ @Test
+ public void multiByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = AbstractTestCase.getFile("bla.tar.deflatez");
+ byte[] buf = new byte[2];
+ try (InputStream is = new FileInputStream(input)) {
+ final DeflateCompressorInputStream in =
+ new DeflateCompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read(buf));
+ Assert.assertEquals(-1, in.read(buf));
in.close();
}
}
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0fe6ae31/src/test/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStreamTest.java b/src/test/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStreamTest.java
index 3526224..531a14f 100644
--- a/src/test/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStreamTest.java
+++ b/src/test/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStreamTest.java
@@ -18,6 +18,7 @@
package org.apache.commons.compress.compressors.deflate64;
import org.apache.commons.compress.compressors.CompressorStreamFactory;
+import org.apache.commons.compress.utils.IOUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -152,4 +153,27 @@ public class Deflate64CompressorInputStreamTest {
}
}
+ @Test
+ public void singleByteReadConsistentlyReturnsMinusOneAtEof() throws Exception {
+ try (final Deflate64CompressorInputStream in =
+ new Deflate64CompressorInputStream(nullDecoder)) {
+ IOUtils.toByteArray(in);
+ assertEquals(-1, in.read());
+ assertEquals(-1, in.read());
+ in.close();
+ }
+ }
+
+ @Test
+ public void multiByteReadConsistentlyReturnsMinusOneAtEof() throws Exception {
+ byte[] buf = new byte[2];
+ try (final Deflate64CompressorInputStream in =
+ new Deflate64CompressorInputStream(nullDecoder)) {
+ IOUtils.toByteArray(in);
+ assertEquals(-1, in.read(buf));
+ assertEquals(-1, in.read(buf));
+ in.close();
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0fe6ae31/src/test/java/org/apache/commons/compress/compressors/lz4/BlockLZ4CompressorInputStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/lz4/BlockLZ4CompressorInputStreamTest.java b/src/test/java/org/apache/commons/compress/compressors/lz4/BlockLZ4CompressorInputStreamTest.java
index 801630e..13331dd 100644
--- a/src/test/java/org/apache/commons/compress/compressors/lz4/BlockLZ4CompressorInputStreamTest.java
+++ b/src/test/java/org/apache/commons/compress/compressors/lz4/BlockLZ4CompressorInputStreamTest.java
@@ -18,6 +18,7 @@
*/
package org.apache.commons.compress.compressors.lz4;
+import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -38,4 +39,30 @@ public class BlockLZ4CompressorInputStreamTest extends AbstractTestCase {
}
}
+ @Test
+ public void singleByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.tar.block_lz4");
+ try (InputStream is = new FileInputStream(input)) {
+ final BlockLZ4CompressorInputStream in =
+ new BlockLZ4CompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read());
+ Assert.assertEquals(-1, in.read());
+ in.close();
+ }
+ }
+
+ @Test
+ public void multiByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.tar.block_lz4");
+ byte[] buf = new byte[2];
+ try (InputStream is = new FileInputStream(input)) {
+ final BlockLZ4CompressorInputStream in =
+ new BlockLZ4CompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read(buf));
+ Assert.assertEquals(-1, in.read(buf));
+ in.close();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0fe6ae31/src/test/java/org/apache/commons/compress/compressors/lz4/FramedLZ4CompressorInputStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/lz4/FramedLZ4CompressorInputStreamTest.java b/src/test/java/org/apache/commons/compress/compressors/lz4/FramedLZ4CompressorInputStreamTest.java
index e3211fa..2fd564b 100644
--- a/src/test/java/org/apache/commons/compress/compressors/lz4/FramedLZ4CompressorInputStreamTest.java
+++ b/src/test/java/org/apache/commons/compress/compressors/lz4/FramedLZ4CompressorInputStreamTest.java
@@ -592,6 +592,33 @@ public final class FramedLZ4CompressorInputStreamTest
}
}
+ @Test
+ public void singleByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.tar.lz4");
+ try (InputStream is = new FileInputStream(input)) {
+ final FramedLZ4CompressorInputStream in =
+ new FramedLZ4CompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ assertEquals(-1, in.read());
+ assertEquals(-1, in.read());
+ in.close();
+ }
+ }
+
+ @Test
+ public void multiByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.tar.lz4");
+ byte[] buf = new byte[2];
+ try (InputStream is = new FileInputStream(input)) {
+ final FramedLZ4CompressorInputStream in =
+ new FramedLZ4CompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ assertEquals(-1, in.read(buf));
+ assertEquals(-1, in.read(buf));
+ in.close();
+ }
+ }
+
interface StreamWrapper {
InputStream wrap(InputStream in) throws Exception;
}
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0fe6ae31/src/test/java/org/apache/commons/compress/compressors/snappy/FramedSnappyCompressorInputStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/snappy/FramedSnappyCompressorInputStreamTest.java b/src/test/java/org/apache/commons/compress/compressors/snappy/FramedSnappyCompressorInputStreamTest.java
index cac4b2c..879456e 100644
--- a/src/test/java/org/apache/commons/compress/compressors/snappy/FramedSnappyCompressorInputStreamTest.java
+++ b/src/test/java/org/apache/commons/compress/compressors/snappy/FramedSnappyCompressorInputStreamTest.java
@@ -189,6 +189,33 @@ public final class FramedSnappyCompressorInputStreamTest
}
}
+ @Test
+ public void singleByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.tar.sz");
+ try (InputStream is = new FileInputStream(input)) {
+ final FramedSnappyCompressorInputStream in =
+ new FramedSnappyCompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ assertEquals(-1, in.read());
+ assertEquals(-1, in.read());
+ in.close();
+ }
+ }
+
+ @Test
+ public void multiByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.tar.sz");
+ byte[] buf = new byte[2];
+ try (InputStream is = new FileInputStream(input)) {
+ final FramedSnappyCompressorInputStream in =
+ new FramedSnappyCompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ assertEquals(-1, in.read(buf));
+ assertEquals(-1, in.read(buf));
+ in.close();
+ }
+ }
+
private void testChecksumUnmasking(final long x) {
assertEquals(Long.toHexString(x),
Long.toHexString(FramedSnappyCompressorInputStream
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0fe6ae31/src/test/java/org/apache/commons/compress/compressors/xz/XZCompressorInputStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/xz/XZCompressorInputStreamTest.java b/src/test/java/org/apache/commons/compress/compressors/xz/XZCompressorInputStreamTest.java
index 6b8ab13..a43dca3 100644
--- a/src/test/java/org/apache/commons/compress/compressors/xz/XZCompressorInputStreamTest.java
+++ b/src/test/java/org/apache/commons/compress/compressors/xz/XZCompressorInputStreamTest.java
@@ -18,6 +18,13 @@
*/
package org.apache.commons.compress.compressors.xz;
+import static org.apache.commons.compress.AbstractTestCase.getFile;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import org.apache.commons.compress.utils.IOUtils;
import org.junit.Assert;
import org.junit.Test;
@@ -33,4 +40,50 @@ public class XZCompressorInputStreamTest {
data[5] = '0';
Assert.assertFalse(XZCompressorInputStream.matches(data, 6));
}
+
+ @Test
+ public void singleByteReadConsistentlyReturnsMinusOneAtEofNoDecompressConcatenated() throws IOException {
+ singleByteReadConsistentlyReturnsMinusOneAtEof(false);
+ }
+
+ @Test
+ public void singleByteReadConsistentlyReturnsMinusOneAtEofDecompressConcatenated() throws IOException {
+ singleByteReadConsistentlyReturnsMinusOneAtEof(true);
+ }
+
+ private void singleByteReadConsistentlyReturnsMinusOneAtEof(boolean decompressConcatenated) throws IOException {
+ final File input = getFile("bla.tar.xz");
+ try (InputStream is = new FileInputStream(input)) {
+ final XZCompressorInputStream in =
+ new XZCompressorInputStream(is, decompressConcatenated);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read());
+ Assert.assertEquals(-1, in.read());
+ in.close();
+ }
+ }
+
+ @Test
+ public void multiByteReadConsistentlyReturnsMinusOneAtEofNoDecompressConcatenated() throws IOException {
+ multiByteReadConsistentlyReturnsMinusOneAtEof(false);
+ }
+
+ @Test
+ public void multiByteReadConsistentlyReturnsMinusOneAtEofDecompressConcatenated() throws IOException {
+ multiByteReadConsistentlyReturnsMinusOneAtEof(true);
+ }
+
+ private void multiByteReadConsistentlyReturnsMinusOneAtEof(boolean decompressConcatenated) throws IOException {
+ final File input = getFile("bla.tar.xz");
+ byte[] buf = new byte[2];
+ try (InputStream is = new FileInputStream(input)) {
+ final XZCompressorInputStream in =
+ new XZCompressorInputStream(is, decompressConcatenated);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read(buf));
+ Assert.assertEquals(-1, in.read(buf));
+ in.close();
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0fe6ae31/src/test/java/org/apache/commons/compress/compressors/z/ZCompressorInputStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/z/ZCompressorInputStreamTest.java b/src/test/java/org/apache/commons/compress/compressors/z/ZCompressorInputStreamTest.java
index 8f62c9b..9e7786b 100644
--- a/src/test/java/org/apache/commons/compress/compressors/z/ZCompressorInputStreamTest.java
+++ b/src/test/java/org/apache/commons/compress/compressors/z/ZCompressorInputStreamTest.java
@@ -18,12 +18,18 @@
*/
package org.apache.commons.compress.compressors.z;
+import org.junit.Assert;
import org.junit.Test;
+import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.SequenceInputStream;
import java.util.Enumeration;
+import org.apache.commons.compress.utils.IOUtils;
+import static org.apache.commons.compress.AbstractTestCase.getFile;
import static org.mockito.Mockito.mock;
import static org.powermock.api.mockito.PowerMockito.doReturn;
@@ -58,5 +64,31 @@ public class ZCompressorInputStreamTest {
}
+ @Test
+ public void singleByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.tar.Z");
+ try (InputStream is = new FileInputStream(input)) {
+ final ZCompressorInputStream in =
+ new ZCompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read());
+ Assert.assertEquals(-1, in.read());
+ in.close();
+ }
+ }
+
+ @Test
+ public void multiByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("bla.tar.Z");
+ byte[] buf = new byte[2];
+ try (InputStream is = new FileInputStream(input)) {
+ final ZCompressorInputStream in =
+ new ZCompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read(buf));
+ Assert.assertEquals(-1, in.read(buf));
+ in.close();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0fe6ae31/src/test/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorInputStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorInputStreamTest.java b/src/test/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorInputStreamTest.java
index cadf198..1d5f066 100644
--- a/src/test/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorInputStreamTest.java
+++ b/src/test/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorInputStreamTest.java
@@ -124,13 +124,28 @@ public class ZstdCompressorInputStreamTest extends AbstractTestCase {
}
@Test
- public void singleByteReadReturnsMinusOneAtEof() throws IOException {
+ public void singleByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
final File input = getFile("zstandard.testdata.zst");
try (InputStream is = new FileInputStream(input)) {
final ZstdCompressorInputStream in =
new ZstdCompressorInputStream(is);
IOUtils.toByteArray(in);
Assert.assertEquals(-1, in.read());
+ Assert.assertEquals(-1, in.read());
+ in.close();
+ }
+ }
+
+ @Test
+ public void multiByteReadConsistentlyReturnsMinusOneAtEof() throws IOException {
+ final File input = getFile("zstandard.testdata.zst");
+ byte[] buf = new byte[2];
+ try (InputStream is = new FileInputStream(input)) {
+ final ZstdCompressorInputStream in =
+ new ZstdCompressorInputStream(is);
+ IOUtils.toByteArray(in);
+ Assert.assertEquals(-1, in.read(buf));
+ Assert.assertEquals(-1, in.read(buf));
in.close();
}
}