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(); }
