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