svn commit: r1930973 - in subversion/trunk/subversion/bindings/javahl/tests/org: apache/subversion/javahl tigris/subversion/javahl

[email protected]
Newsgroups gmane.comp.version-control.subversion.svn
Message-ID <[email protected]>
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();
     }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.