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

ggregory 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 7806142d More modern temp file creation and deletion (#535)
7806142d is described below

commit 7806142dfe5dfdc2e1ff84d07b716da6ad926da9
Author: Elliotte Rusty Harold <[email protected]>
AuthorDate: Tue Dec 26 15:05:15 2023 +0000

    More modern temp file creation and deletion (#535)
    
    * more modern temp file creation and deletion
    
    * use AbstractTempDirTest
---
 .../io/output/DeferredFileOutputStreamTest.java    | 138 ++++++++-------------
 1 file changed, 52 insertions(+), 86 deletions(-)

diff --git 
a/src/test/java/org/apache/commons/io/output/DeferredFileOutputStreamTest.java 
b/src/test/java/org/apache/commons/io/output/DeferredFileOutputStreamTest.java
index e23a40c0..987fc63d 100644
--- 
a/src/test/java/org/apache/commons/io/output/DeferredFileOutputStreamTest.java
+++ 
b/src/test/java/org/apache/commons/io/output/DeferredFileOutputStreamTest.java
@@ -29,11 +29,10 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.stream.IntStream;
 
-import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.file.AbstractTempDirTest;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
 import org.junit.jupiter.params.ParameterizedTest;
@@ -42,7 +41,7 @@ import org.junit.jupiter.params.provider.MethodSource;
 /**
  * Tests {@code DeferredFileOutputStream}.
  */
-public class DeferredFileOutputStreamTest {
+public class DeferredFileOutputStreamTest extends AbstractTempDirTest {
 
     public static IntStream data() {
         return IntStream.of(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 
4096);
@@ -65,28 +64,21 @@ public class DeferredFileOutputStreamTest {
     @ParameterizedTest(name = "initialBufferSize = {0}")
     @MethodSource("data")
     public void testAboveThreshold(final int initialBufferSize) throws 
IOException {
-        final File testFile = new File("testAboveThreshold.dat");
+        final File testFile = Files.createTempFile(tempDirPath, 
"testAboveThreshold", "dat").toFile();
 
-        // Ensure that the test starts from a clean base.
-        testFile.delete();
-
-        // @formatter:off
-        final DeferredFileOutputStream dfos = 
DeferredFileOutputStream.builder()
+        try (final DeferredFileOutputStream dfos = 
DeferredFileOutputStream.builder()
                 .setThreshold(testBytes.length - 5)
                 .setBufferSize(initialBufferSize)
                 .setOutputFile(testFile)
-                .get();
-        // @formatter:on
-        dfos.write(testBytes, 0, testBytes.length);
-        dfos.close();
-        assertFalse(dfos.isInMemory());
-        assertNull(dfos.getData());
-        assertEquals(testFile.length(), dfos.getByteCount());
-
-        verifyResultFile(testFile);
-
-        // Ensure that the test starts from a clean base.
-        testFile.delete();
+                .get()) {
+            dfos.write(testBytes, 0, testBytes.length);
+            dfos.close();
+            assertFalse(dfos.isInMemory());
+            assertNull(dfos.getData());
+            assertEquals(testFile.length(), dfos.getByteCount());
+
+            verifyResultFile(testFile);
+        }
     }
 
     /**
@@ -97,25 +89,24 @@ public class DeferredFileOutputStreamTest {
     @ParameterizedTest(name = "initialBufferSize = {0}")
     @MethodSource("data")
     public void testAboveThresholdGetInputStream(final int initialBufferSize, 
final @TempDir Path tempDir) throws IOException {
-        final File testFile = 
tempDir.resolve("testAboveThreshold.dat").toFile();
+        final File testFile = Files.createTempFile(tempDirPath, 
"testAboveThreshold", "dat").toFile();
 
-        // @formatter:off
-        final DeferredFileOutputStream dfos = 
DeferredFileOutputStream.builder()
+        try (final DeferredFileOutputStream dfos = 
DeferredFileOutputStream.builder()
                 .setThreshold(testBytes.length - 5)
                 .setBufferSize(initialBufferSize)
                 .setOutputFile(testFile)
-                .get();
-        // @formatter:on
-        dfos.write(testBytes, 0, testBytes.length);
-        dfos.close();
-        assertFalse(dfos.isInMemory());
-        assertEquals(testFile.length(), dfos.getByteCount());
+                .get()) {
+            dfos.write(testBytes, 0, testBytes.length);
+            dfos.close();
+            assertFalse(dfos.isInMemory());
+            assertEquals(testFile.length(), dfos.getByteCount());
 
-        try (InputStream is = dfos.toInputStream()) {
-            assertArrayEquals(testBytes, IOUtils.toByteArray(is));
-        }
+            try (InputStream is = dfos.toInputStream()) {
+                assertArrayEquals(testBytes, IOUtils.toByteArray(is));
+            }
 
-        verifyResultFile(testFile);
+            verifyResultFile(testFile);
+        }
     }
 
     /**
@@ -196,15 +187,14 @@ public class DeferredFileOutputStreamTest {
 
         final String prefix = "commons-io-test";
         final String suffix = ".out";
-        final Path tempDir = Paths.get("target");
         // @formatter:off
         final DeferredFileOutputStream dfos = 
DeferredFileOutputStream.builder()
                 .setThreshold(testBytes.length - 5)
                 .setBufferSize(initialBufferSize)
                 .setPrefix(prefix)
                 .setSuffix(suffix)
-                .setDirectory(tempDir)
-                .setDirectory(tempDir.toFile())
+                .setDirectory(tempDirFile)
+                .setDirectory(tempDirPath.toFile())
                 .get();
         // @formatter:on
         assertNull(dfos.getFile(), "Check File is null-A");
@@ -218,12 +208,9 @@ public class DeferredFileOutputStreamTest {
         assertTrue(dfos.getFile().exists(), "Check file exists");
         assertTrue(dfos.getFile().getName().startsWith(prefix), "Check 
prefix");
         assertTrue(dfos.getFile().getName().endsWith(suffix), "Check suffix");
-        assertEquals(tempDir, dfos.getPath().getParent(), "Check dir");
+        assertEquals(tempDirPath, dfos.getPath().getParent(), "Check dir");
 
         verifyResultFile(dfos.getFile());
-
-        // Delete the temporary file.
-        dfos.getFile().delete();
     }
 
     /**
@@ -236,32 +223,30 @@ public class DeferredFileOutputStreamTest {
 
         final String prefix = "commons-io-test";
         final String suffix = null;
-        final Path tempDir = null;
-        // @formatter:off
         final DeferredFileOutputStream dfos = 
DeferredFileOutputStream.builder()
                 .setThreshold(testBytes.length - 5)
                 .setBufferSize(initialBufferSize)
                 .setPrefix(prefix)
                 .setSuffix(suffix)
-                .setDirectory(tempDir)
+                .setDirectory((Path) null)
                 .get();
-        // @formatter:on
-        assertNull(dfos.getFile(), "Check File is null-A");
-        assertNull(dfos.getPath(), "Check Path is null-A");
-        dfos.write(testBytes, 0, testBytes.length);
-        dfos.close();
-        assertFalse(dfos.isInMemory());
-        assertNull(dfos.getData());
-        assertEquals(testBytes.length, dfos.getByteCount());
-        assertNotNull(dfos.getFile(), "Check file not null");
-        assertTrue(dfos.getFile().exists(), "Check file exists");
-        assertTrue(dfos.getFile().getName().startsWith(prefix), "Check 
prefix");
-        assertTrue(dfos.getFile().getName().endsWith(".tmp"), "Check suffix"); 
// ".tmp" is default
-
-        verifyResultFile(dfos.getFile());
-
-        // Delete the temporary file.
-        dfos.getFile().delete();
+        try {
+            assertNull(dfos.getFile(), "Check File is null-A");
+            assertNull(dfos.getPath(), "Check Path is null-A");
+            dfos.write(testBytes, 0, testBytes.length);
+            dfos.close();
+            assertFalse(dfos.isInMemory());
+            assertNull(dfos.getData());
+            assertEquals(testBytes.length, dfos.getByteCount());
+            assertNotNull(dfos.getFile(), "Check file not null");
+            assertTrue(dfos.getFile().exists(), "Check file exists");
+            assertTrue(dfos.getFile().getName().startsWith(prefix), "Check 
prefix");
+            assertTrue(dfos.getFile().getName().endsWith(".tmp"), "Check 
suffix"); // ".tmp" is default
+            verifyResultFile(dfos.getFile());
+        } finally {
+            // Delete the temporary file.
+            dfos.getFile().delete();
+        }
     }
 
     /**
@@ -274,8 +259,7 @@ public class DeferredFileOutputStreamTest {
 
         final String prefix = "commons-io-test";
         final String suffix = ".out";
-        final File tempDir = FileUtils.current();
-        final DeferredFileOutputStream dfos = new 
DeferredFileOutputStream(testBytes.length + 42, initialBufferSize, prefix, 
suffix, tempDir);
+        final DeferredFileOutputStream dfos = new 
DeferredFileOutputStream(testBytes.length + 42, initialBufferSize, prefix, 
suffix, tempDirFile);
         assertNull(dfos.getFile(), "Check File is null-A");
         assertNull(dfos.getPath(), "Check Path is null-A");
         dfos.write(testBytes, 0, testBytes.length);
@@ -294,8 +278,7 @@ public class DeferredFileOutputStreamTest {
     public void testTempFileError() throws Exception {
         final String prefix = null;
         final String suffix = ".out";
-        final File tempDir = FileUtils.current();
-        assertThrows(NullPointerException.class, () -> new 
DeferredFileOutputStream(testBytes.length - 5, prefix, suffix, tempDir));
+        assertThrows(NullPointerException.class, () -> new 
DeferredFileOutputStream(testBytes.length - 5, prefix, suffix, tempDirFile));
     }
 
     /**
@@ -306,10 +289,7 @@ public class DeferredFileOutputStreamTest {
     @ParameterizedTest(name = "initialBufferSize = {0}")
     @MethodSource("data")
     public void testThresholdReached(final int initialBufferSize) throws 
IOException {
-        final File testFile = new File("testThresholdReached.dat");
-
-        // Ensure that the test starts from a clean base.
-        testFile.delete();
+        final File testFile = Files.createTempFile(tempDirPath, 
"testThresholdReached", "dat").toFile();
 
         // @formatter:off
         final DeferredFileOutputStream dfos = 
DeferredFileOutputStream.builder()
@@ -328,9 +308,6 @@ public class DeferredFileOutputStreamTest {
         assertEquals(testBytes.length, dfos.getByteCount());
 
         verifyResultFile(testFile);
-
-        // Ensure that the test starts from a clean base.
-        testFile.delete();
     }
 
     /**
@@ -339,10 +316,8 @@ public class DeferredFileOutputStreamTest {
     @ParameterizedTest(name = "initialBufferSize = {0}")
     @MethodSource("data")
     public void testWriteToLarge(final int initialBufferSize) throws 
IOException {
-        final File testFile = new File("testWriteToFile.dat");
+        final File testFile = Files.createTempFile(tempDirPath, 
"testWriteToFile", "dat").toFile();
         final ByteArrayOutputStream baos = new 
ByteArrayOutputStream(initialBufferSize);
-        // Ensure that the test starts from a clean base.
-        testFile.delete();
 
         final DeferredFileOutputStream dfos = 
DeferredFileOutputStream.builder().setThreshold(testBytes.length / 
2).setOutputFile(testFile).get();
         dfos.write(testBytes);
@@ -358,7 +333,6 @@ public class DeferredFileOutputStreamTest {
         final byte[] copiedBytes = baos.toByteArray();
         assertArrayEquals(testBytes, copiedBytes);
         verifyResultFile(testFile);
-        testFile.delete();
     }
 
     /**
@@ -367,10 +341,8 @@ public class DeferredFileOutputStreamTest {
     @ParameterizedTest(name = "initialBufferSize = {0}")
     @MethodSource("data")
     public void testWriteToLargeCtor(final int initialBufferSize) throws 
IOException {
-        final File testFile = new File("testWriteToFile.dat");
+        final File testFile = Files.createTempFile(tempDirPath, 
"testWriteToFile", "dat").toFile();
         final ByteArrayOutputStream baos = new 
ByteArrayOutputStream(initialBufferSize);
-        // Ensure that the test starts from a clean base.
-        testFile.delete();
 
         final DeferredFileOutputStream dfos = new 
DeferredFileOutputStream(testBytes.length / 2, testFile);
         dfos.write(testBytes);
@@ -386,7 +358,6 @@ public class DeferredFileOutputStreamTest {
         final byte[] copiedBytes = baos.toByteArray();
         assertArrayEquals(testBytes, copiedBytes);
         verifyResultFile(testFile);
-        testFile.delete();
     }
 
     /**
@@ -396,15 +367,12 @@ public class DeferredFileOutputStreamTest {
     @ParameterizedTest(name = "initialBufferSize = {0}")
     @MethodSource("data")
     public void testWriteToSmall(final int initialBufferSize) throws 
IOException {
-        final File testFile = new File("testWriteToMem.dat");
+        final File testFile = Files.createTempFile(tempDirPath, 
"testWriteToMem", "dat").toFile();
         final ByteArrayOutputStream baos = new 
ByteArrayOutputStream(initialBufferSize);
-        // Ensure that the test starts from a clean base.
-        testFile.delete();
 
         final DeferredFileOutputStream dfos = new 
DeferredFileOutputStream(testBytes.length * 2, initialBufferSize, testFile);
         dfos.write(testBytes);
 
-        assertFalse(testFile.exists());
         assertTrue(dfos.isInMemory());
 
         assertThrows(IOException.class, () -> dfos.writeTo(baos));
@@ -414,8 +382,6 @@ public class DeferredFileOutputStreamTest {
         dfos.writeTo(baos);
         final byte[] copiedBytes = baos.toByteArray();
         assertArrayEquals(testBytes, copiedBytes);
-
-        testFile.delete();
     }
 
     /**

Reply via email to