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 e168e7d6f Add FileUtilsTest.testForceDeleteUnwritableFile()
e168e7d6f is described below

commit e168e7d6fd99bc92b7bfc64e68fdada820ac0aa6
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Sun Mar 24 09:34:25 2024 -0400

    Add FileUtilsTest.testForceDeleteUnwritableFile()
---
 .../java/org/apache/commons/io/FileUtilsTest.java  | 48 ++++++++++++++++------
 1 file changed, 36 insertions(+), 12 deletions(-)

diff --git a/src/test/java/org/apache/commons/io/FileUtilsTest.java 
b/src/test/java/org/apache/commons/io/FileUtilsTest.java
index efd139228..c2bddc330 100644
--- a/src/test/java/org/apache/commons/io/FileUtilsTest.java
+++ b/src/test/java/org/apache/commons/io/FileUtilsTest.java
@@ -1242,18 +1242,6 @@ public class FileUtilsTest extends AbstractTempDirTest {
             "Should not be able to copy a file into the same directory as 
itself");
     }
 
-    @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");
@@ -1334,6 +1322,18 @@ public class FileUtilsTest extends AbstractTempDirTest {
         assertArrayEquals(expected, destination.toByteArray(), "Check Full 
copy");
     }
 
+    @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");
@@ -1684,6 +1684,30 @@ public class FileUtilsTest extends AbstractTempDirTest {
         }
     }
 
+    @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

Reply via email to