Author: jun66j5
Date: Tue Dec 30 01:13:29 2025
New Revision: 1930973

Log:
Fix test failures of JavaHL with Java 25 on Windows due to that deleting a
file with readonly flag on Windows fails since Java 25.

https://bugs.openjdk.org/browse/JDK-8355954

* subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
  (createDirectories):
    Add `throws IOException`.
  (removeDirOrFile):
    Unset readonly flag of the file before deleting the file and add
    `throws IOException`.

* subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java
  (createDirectories, removeDirOrFile): Ditto.

Modified:
   
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
   
subversion/trunk/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java

Modified: 
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
==============================================================================
--- 
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
        Mon Dec 29 19:39:34 2025        (r1930972)
+++ 
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
        Tue Dec 30 01:13:29 2025        (r1930973)
@@ -31,6 +31,10 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.nio.file.FileStore;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.attribute.DosFileAttributeView;
 import java.util.Set;
 import java.util.HashSet;
 import java.util.HashMap;
@@ -287,7 +291,7 @@ class SVNTests extends TestCase
      * Create a directory for the sample (Greek) repository, config
      * files, repositories and working copies.
      */
-    private void createDirectories()
+    private void createDirectories() throws IOException
     {
         this.rootDir.mkdirs();
 
@@ -495,7 +499,7 @@ class SVNTests extends TestCase
      *
      * @param path The file or directory to be removed.
      */
-    static final void removeDirOrFile(File path)
+    static final void removeDirOrFile(File path) throws IOException
     {
         if (!path.exists())
         {
@@ -511,6 +515,18 @@ class SVNTests extends TestCase
             }
         }
 
+        // Unset readonly flag of the file because deleting a file with
+        // readonly flag on Windows fails since Java 25.
+        Path nioPath = path.toPath();
+        FileStore store = Files.getFileStore(nioPath);
+        if (store.supportsFileAttributeView(DosFileAttributeView.class)) {
+            DosFileAttributeView view = Files.getFileAttributeView(
+                    nioPath, DosFileAttributeView.class);
+            if (view != null) {
+                view.setReadOnly(false);;
+            }
+        }
+
         path.delete();
     }
 

Modified: 
subversion/trunk/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java
==============================================================================
--- 
subversion/trunk/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java
        Mon Dec 29 19:39:34 2025        (r1930972)
+++ 
subversion/trunk/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java
        Tue Dec 30 01:13:29 2025        (r1930973)
@@ -26,6 +26,10 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.nio.file.FileStore;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.attribute.DosFileAttributeView;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -245,7 +249,7 @@ class SVNTests extends TestCase
      * Create a directory for the sample (Greek) repository, config
      * files, repositories and working copies.
      */
-    private void createDirectories()
+    private void createDirectories() throws IOException
     {
         this.rootDir.mkdirs();
 
@@ -381,7 +385,7 @@ class SVNTests extends TestCase
      *
      * @param path The file or directory to be removed.
      */
-    static final void removeDirOrFile(File path)
+    static final void removeDirOrFile(File path) throws IOException
     {
         if (!path.exists())
         {
@@ -398,6 +402,18 @@ class SVNTests extends TestCase
             }
         }
 
+        // Unset readonly flag of the file because deleting a file with
+        // readonly flag on Windows fails since Java 25.
+        Path nioPath = path.toPath();
+        FileStore store = Files.getFileStore(nioPath);
+        if (store.supportsFileAttributeView(DosFileAttributeView.class)) {
+            DosFileAttributeView view = Files.getFileAttributeView(
+                    nioPath, DosFileAttributeView.class);
+            if (view != null) {
+                view.setReadOnly(false);;
+            }
+        }
+
         path.delete();
     }
 

Reply via email to