Author: svn-role
Date: Tue May 19 04:00:13 2026
New Revision: 1934373

Log:
Merge the r1930973 group from trunk:

 * r1930973, r1934367
   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.
   Justification:
     Allow JavaHL test to succeed on Windows since Java 25
   Votes:
     +0: hartmannathan (without r1934367; cannot test; Windows testers needed 
please)
     +0: jcorvel (can't test atm, but LGTM)
     +1: jun66j5

Modified:
   subversion/branches/1.15.x/   (props changed)
   subversion/branches/1.15.x/STATUS
   
subversion/branches/1.15.x/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
   
subversion/branches/1.15.x/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java

Modified: subversion/branches/1.15.x/STATUS
==============================================================================
--- subversion/branches/1.15.x/STATUS   Tue May 19 02:38:51 2026        
(r1934372)
+++ subversion/branches/1.15.x/STATUS   Tue May 19 04:00:13 2026        
(r1934373)
@@ -52,16 +52,6 @@ Veto-blocked changes:
 Approved changes:
 =================
 
- * r1930973, r1934367
-   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.
-   Justification:
-     Allow JavaHL test to succeed on Windows since Java 25
-   Votes:
-     +0: hartmannathan (without r1934367; cannot test; Windows testers needed 
please)
-     +0: jcorvel (can't test atm, but LGTM)
-     +1: jun66j5
-
  * r1932863, r1933181
    Update some readme files
    Justification:
@@ -90,8 +80,7 @@ Approved changes:
    Silence all deprecation warnings from the org.tigris JavaHL package.
    Justification:
      Unnecessary warnings hide actual problems.
-   Depends:
-     r1933796
+   Depends: 
    Votes:
      +1: brane, dsahlberg, jcorvel
 
@@ -100,13 +89,12 @@ Approved changes:
    Justification:
      Provides fine-grained control of access to restricted methods. The
      alternative requires granting access to all "unnamed" modules.
+   Depends: 
    Notes:
      Although this change does not affect backwards compatibility of JavaHL,
      it is my opinion that it really should go into a minor release. So we
      should either backport to 1.15.0 or wait for 1.16.0.
      Tested with JDK 1.8, JDK 11 and JDK 25 on ARM64 macOS.
-   Depends:
-     r1933877, r1933796
    Votes:
      +1: brane, dsahlberg, jcorvel
 

Modified: 
subversion/branches/1.15.x/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
==============================================================================
--- 
subversion/branches/1.15.x/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
      Tue May 19 02:38:51 2026        (r1934372)
+++ 
subversion/branches/1.15.x/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
      Tue May 19 04:00:13 2026        (r1934373)
@@ -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/branches/1.15.x/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java
==============================================================================
--- 
subversion/branches/1.15.x/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java
      Tue May 19 02:38:51 2026        (r1934372)
+++ 
subversion/branches/1.15.x/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java
      Tue May 19 04:00:13 2026        (r1934373)
@@ -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