Add FileUtilsTest.testForceDeleteUnwritableFile()
diff --git a/src/test/java/org/apache/commons/io/FileUtilsTest.java b/src/test/java/org/apache/commons/io/FileUtilsTest.java
index efd1392..c2bddc3 100644
--- a/src/test/java/org/apache/commons/io/FileUtilsTest.java
+++ b/src/test/java/org/apache/commons/io/FileUtilsTest.java
@@ -1243,18 +1243,6 @@
}
@Test
- public void testCopyFileToReadOnlyDirectory() throws Exception {
- final File directory = new File(tempDirFile, "readonly");
- if (!directory.exists()) {
- assumeTrue(directory.mkdirs());
- }
- assumeTrue(directory.setWritable(false));
-
- assertThrows(IOException.class, () -> FileUtils.copyFileToDirectory(testFile1, directory),
- "Should not be able to copy a file into a readonly directory");
- }
-
- @Test
public void testCopyFile2() throws Exception {
final File destination = new File(tempDirFile, "copy2.txt");
@@ -1335,6 +1323,18 @@
}
@Test
+ public void testCopyFileToReadOnlyDirectory() throws Exception {
+ final File directory = new File(tempDirFile, "readonly");
+ if (!directory.exists()) {
+ assumeTrue(directory.mkdirs());
+ }
+ assumeTrue(directory.setWritable(false));
+
+ assertThrows(IOException.class, () -> FileUtils.copyFileToDirectory(testFile1, directory),
+ "Should not be able to copy a file into a readonly directory");
+ }
+
+ @Test
public void testCopyToDirectoryWithDirectory() throws IOException {
final File destDirectory = new File(tempDirFile, "destination");
if (!destDirectory.exists()) {
@@ -1685,6 +1685,30 @@
}
@Test
+ public void testForceDeleteUnwritableFile() throws Exception {
+ try (TempFile destination = TempFile.create("test-", ".txt")) {
+ final File file = destination.toFile();
+ assertTrue(file.canWrite());
+ assertTrue(file.setWritable(false));
+ assertFalse(file.canWrite());
+ assertTrue(file.canRead());
+ // sanity check that File.delete() deletes read-only files.
+ assertTrue(file.delete());
+ }
+ try (TempFile destination = TempFile.create("test-", ".txt")) {
+ final File file = destination.toFile();
+ // real test
+ assertTrue(file.canWrite());
+ assertTrue(file.setWritable(false));
+ assertFalse(file.canWrite());
+ assertTrue(file.canRead());
+ assertTrue(file.exists(), "File doesn't exist to delete");
+ FileUtils.forceDelete(file);
+ assertFalse(file.exists(), "Check deletion");
+ }
+ }
+
+ @Test
public void testForceMkdir() throws Exception {
// Tests with existing directory
FileUtils.forceMkdir(tempDirFile);