You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2020/08/05 16:49:44 UTC

[commons-io] branch master updated: Test cases for close() methods added in 2.7

This is an automated email from the ASF dual-hosted git repository.

sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git


The following commit(s) were added to refs/heads/master by this push:
     new 9741fb8  Test cases for close() methods added in 2.7
9741fb8 is described below

commit 9741fb8508c422668e6975304e41e5a13e0e704c
Author: Sebb <se...@apache.org>
AuthorDate: Wed Aug 5 17:49:35 2020 +0100

    Test cases for close() methods added in 2.7
---
 .../org/apache/commons/io/IOUtilsTestCase.java     | 30 ++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/src/test/java/org/apache/commons/io/IOUtilsTestCase.java b/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
index 06f454d..1c9c627 100644
--- a/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
+++ b/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
@@ -61,9 +61,11 @@ import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.commons.io.function.IOConsumer;
 import org.apache.commons.io.output.AppendableWriter;
 import org.apache.commons.io.output.StringBuilderWriter;
 import org.apache.commons.io.testtools.TestUtils;
+import org.apache.commons.io.testtools.YellOnCloseReader;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
@@ -138,6 +140,34 @@ public class IOUtilsTestCase {
         }
     }
 
+    @Test public void testClose() {
+        assertDoesNotThrow(() -> IOUtils.close((Closeable) null));
+        assertDoesNotThrow(() -> IOUtils.close(new StringReader("s")));
+        assertThrows(IOException.class, () -> IOUtils.close(new YellOnCloseReader(new StringReader("s"))));
+    }
+
+    @Test public void testCloseConsumer() {
+        Closeable nulCloseable = null;
+        assertDoesNotThrow(() -> IOUtils.close(nulCloseable, null)); // null consumer
+        assertDoesNotThrow(() -> IOUtils.close(new StringReader("s"), null)); // null consumer
+        assertDoesNotThrow(() -> IOUtils.close(new YellOnCloseReader(new StringReader("s")), null)); // null consumer
+
+        final IOConsumer<IOException> nullConsumer = null; // null consumer doesn't throw
+        assertDoesNotThrow(() -> IOUtils.close(nulCloseable, nullConsumer));
+        assertDoesNotThrow(() -> IOUtils.close(new StringReader("s"), nullConsumer));
+        assertDoesNotThrow(() -> IOUtils.close(new YellOnCloseReader(new StringReader("s")), nullConsumer));
+
+        final IOConsumer<IOException> silentConsumer = i -> {}; // silent consumer doesn't throw
+        assertDoesNotThrow(() -> IOUtils.close(nulCloseable, silentConsumer));
+        assertDoesNotThrow(() -> IOUtils.close(new StringReader("s"), silentConsumer));
+        assertDoesNotThrow(() -> IOUtils.close(new YellOnCloseReader(new StringReader("s")), silentConsumer));
+
+        final IOConsumer<IOException> noisyConsumer = i -> {throw i;}; // consumer passes on the throw
+        assertDoesNotThrow(() -> IOUtils.close(nulCloseable, noisyConsumer)); // no throw
+        assertDoesNotThrow(() -> IOUtils.close(new StringReader("s"), noisyConsumer)); // no throw
+        assertThrows(IOException.class, () -> IOUtils.close(new YellOnCloseReader(new StringReader("s")),noisyConsumer)); // closeable throws
+    }
+
     @Test public void testCloseQuietly_AllCloseableIOException() {
         final Closeable closeable = () -> {
             throw new IOException();