Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package plexus-io for openSUSE:Factory checked in at 2026-03-01 22:14:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/plexus-io (Old) and /work/SRC/openSUSE:Factory/.plexus-io.new.29461 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "plexus-io" Sun Mar 1 22:14:22 2026 rev:8 rq:1335482 version:3.6.0 Changes: -------- --- /work/SRC/openSUSE:Factory/plexus-io/plexus-io.changes 2025-10-07 18:31:55.438470125 +0200 +++ /work/SRC/openSUSE:Factory/.plexus-io.new.29461/plexus-io.changes 2026-03-01 22:15:02.050479578 +0100 @@ -1,0 +2,26 @@ +Fri Feb 27 14:49:11 UTC 2026 - Fridrich Strba <[email protected]> + +- Upgrade to version 3.6.0 + * Maintenance + + JUnit Jupiter best practices + + Replace FileUtils.deleteDirectory(File) with JDK provided API + + Close DeferredFileOutputStream to prevent + FileNotFoundException on temp files + + Handle IOException when retrieving file ownership on WSL2 + network drives + * Dependency updates + + Bump org.codehaus.plexus:plexus-testing to 2.0.1 + + Bump org.codehaus.plexus:plexus from 23 to 24 + +------------------------------------------------------------------- +Fri Feb 27 14:47:04 UTC 2026 - Fridrich Strba <[email protected]> + +- Upgrade to version 3.5.2 + * Dependency updates + + Bump org.codehaus.plexus:plexus from 18 to 23 + + Bump eclipseSisuVersion from 0.9.0.M3 to 0.9.0.M4 + + Bump commons-io:commons-io from 2.16.1 to 2.20.0 + + Bump org.codehaus.plexus:plexus-testing from 1.4.0 to 1.6.0 + + Cleanup dependencies + +------------------------------------------------------------------- Old: ---- plexus-io-3.5.1.tar.gz New: ---- plexus-io-3.6.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ plexus-io.spec ++++++ --- /var/tmp/diff_new_pack.r5HRVH/_old 2026-03-01 22:15:02.674505224 +0100 +++ /var/tmp/diff_new_pack.r5HRVH/_new 2026-03-01 22:15:02.678505389 +0100 @@ -1,7 +1,7 @@ # # spec file for package plexus-io # -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: plexus-io -Version: 3.5.1 +Version: 3.6.0 Release: 0 Summary: Plexus IO Components License: Apache-2.0 ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.r5HRVH/_old 2026-03-01 22:15:02.746508183 +0100 +++ /var/tmp/diff_new_pack.r5HRVH/_new 2026-03-01 22:15:02.754508513 +0100 @@ -1,6 +1,6 @@ -mtime: 1759841219 -commit: 0ec420ffef94d825f5573029e7ab6bb074e79f35b8e6b34f6c816c0dae5b6b29 +mtime: 1772203931 +commit: 52d5319298584a50506354df15e2700d1c6c3a73133690e4a1d0e4e9f9ede258 url: https://src.opensuse.org/java-packages/plexus-io.git -revision: 0ec420ffef94d825f5573029e7ab6bb074e79f35b8e6b34f6c816c0dae5b6b29 +revision: 52d5319298584a50506354df15e2700d1c6c3a73133690e4a1d0e4e9f9ede258 projectscmsync: https://src.opensuse.org/java-packages/_ObsPrj ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-02-27 15:56:19.000000000 +0100 @@ -0,0 +1 @@ +.osc ++++++ plexus-io-3.5.1.tar.gz -> plexus-io-3.6.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/README.md new/plexus-io-plexus-io-3.6.0/README.md --- old/plexus-io-plexus-io-3.5.1/README.md 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/README.md 2025-11-07 19:10:05.000000000 +0100 @@ -12,3 +12,5 @@ ``` mvn -Preporting verify site-deploy ``` + +Enjoy! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/pom.xml new/plexus-io-plexus-io-3.6.0/pom.xml --- old/plexus-io-plexus-io-3.5.1/pom.xml 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/pom.xml 2025-11-07 19:10:05.000000000 +0100 @@ -5,18 +5,18 @@ <parent> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus</artifactId> - <version>18</version> + <version>24</version> </parent> <artifactId>plexus-io</artifactId> - <version>3.5.1</version> + <version>3.6.0</version> <name>Plexus IO Components</name> <scm> <connection>scm:git:[email protected]:codehaus-plexus/plexus-io.git</connection> <developerConnection>scm:git:[email protected]:codehaus-plexus/plexus-io.git</developerConnection> - <tag>plexus-io-3.5.1</tag> + <tag>plexus-io-3.6.0</tag> <url>http://github.com/codehaus-plexus/plexus-io</url> </scm> <issueManagement> @@ -31,27 +31,11 @@ </distributionManagement> <properties> - <eclipseSisuVersion>0.9.0.M3</eclipseSisuVersion> <slf4jVersion>1.7.36</slf4jVersion> - <project.build.outputTimestamp>2024-09-09T12:59:16Z</project.build.outputTimestamp> + <project.build.outputTimestamp>2025-11-07T18:10:00Z</project.build.outputTimestamp> </properties> - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.eclipse.sisu</groupId> - <artifactId>org.eclipse.sisu.inject</artifactId> - <version>${eclipseSisuVersion}</version> - </dependency> - <dependency> - <groupId>org.eclipse.sisu</groupId> - <artifactId>org.eclipse.sisu.plexus</artifactId> - <version>${eclipseSisuVersion}</version> - </dependency> - </dependencies> - </dependencyManagement> <dependencies> - <!-- JSR330 --> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> @@ -61,13 +45,7 @@ <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-utils</artifactId> - <version>4.0.1</version> - </dependency> - <dependency> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-xml</artifactId> - <version>3.0.1</version> - <scope>test</scope> + <version>3.6.0</version> </dependency> <dependency> <groupId>com.google.code.findbugs</groupId> @@ -78,7 +56,7 @@ <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> - <version>2.16.1</version> + <version>2.20.0</version> </dependency> <!-- Tests --> @@ -96,19 +74,14 @@ <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-testing</artifactId> - <version>1.4.0</version> + <version>2.0.1</version> <scope>test</scope> </dependency> <!-- Sisu and dependencies --> <dependency> <groupId>org.eclipse.sisu</groupId> <artifactId>org.eclipse.sisu.inject</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.google.inject</groupId> - <artifactId>guice</artifactId> - <version>6.0.0</version> + <version>0.9.0.M4</version> <scope>test</scope> </dependency> </dependencies> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/main/java/org/codehaus/plexus/components/io/attributes/FileAttributes.java new/plexus-io-plexus-io-3.6.0/src/main/java/org/codehaus/plexus/components/io/attributes/FileAttributes.java --- old/plexus-io-plexus-io-3.5.1/src/main/java/org/codehaus/plexus/components/io/attributes/FileAttributes.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/main/java/org/codehaus/plexus/components/io/attributes/FileAttributes.java 2025-11-07 19:10:05.000000000 +0100 @@ -160,9 +160,16 @@ this.lastModifiedTime = (FileTime) attrs.get("lastModifiedTime"); } - private static String getPrincipalName(Path path, String attribute) throws IOException { - Object owner = Files.getAttribute(path, attribute, LinkOption.NOFOLLOW_LINKS); - return ((Principal) owner).getName(); + @Nullable + private static String getPrincipalName(Path path, String attribute) { + try { + Object owner = Files.getAttribute(path, attribute, LinkOption.NOFOLLOW_LINKS); + return ((Principal) owner).getName(); + } catch (IOException e) { + // Some file systems (e.g., WSL2 mapped network drives) don't provide ownership information + // Return null instead of propagating the exception + return null; + } } public FileAttributes( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/main/java/org/codehaus/plexus/components/io/resources/Deferred.java new/plexus-io-plexus-io-3.6.0/src/main/java/org/codehaus/plexus/components/io/resources/Deferred.java --- old/plexus-io-plexus-io-3.5.1/src/main/java/org/codehaus/plexus/components/io/resources/Deferred.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/main/java/org/codehaus/plexus/components/io/resources/Deferred.java 2025-11-07 19:10:05.000000000 +0100 @@ -47,9 +47,10 @@ .get() : null; if (dfos != null) { - InputStream inputStream = owner.getInputStream(resource); - IOUtils.copy(inputStream, dfos); - IOUtils.closeQuietly(inputStream); + try (InputStream inputStream = owner.getInputStream(resource); + DeferredFileOutputStream closeable = dfos) { + IOUtils.copy(inputStream, dfos); + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/main/java/org/codehaus/plexus/components/io/resources/PlexusIoFileResource.java new/plexus-io-plexus-io-3.6.0/src/main/java/org/codehaus/plexus/components/io/resources/PlexusIoFileResource.java --- old/plexus-io-plexus-io-3.5.1/src/main/java/org/codehaus/plexus/components/io/resources/PlexusIoFileResource.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/main/java/org/codehaus/plexus/components/io/resources/PlexusIoFileResource.java 2025-11-07 19:10:05.000000000 +0100 @@ -108,11 +108,11 @@ .setThreshold(5000000) .setPrefix("p-archiver") .get(); - InputStream inputStream = supplier.getContents(); - InputStream transformed = transToUse.transform(resource, inputStream); - IOUtils.copy(transformed, dfos); - IOUtils.closeQuietly(inputStream); - IOUtils.closeQuietly(transformed); + try (InputStream inputStream = supplier.getContents(); + InputStream transformed = transToUse.transform(resource, inputStream); + DeferredFileOutputStream closeable = dfos) { + IOUtils.copy(transformed, dfos); + } return dfos; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/site/site.xml new/plexus-io-plexus-io-3.6.0/src/site/site.xml --- old/plexus-io-plexus-io-3.5.1/src/site/site.xml 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/site/site.xml 2025-11-07 19:10:05.000000000 +0100 @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/DECORATION/1.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd"> +<site xmlns="http://maven.apache.org/SITE/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 https://maven.apache.org/xsd/site-2.0.0.xsd"> + <body> <menu name="Overview"> <item name="Introduction" href="index.html"/> @@ -16,4 +16,4 @@ <menu ref="parent"/> <menu ref="reports"/> </body> -</project> +</site> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/attributes/AbstractResourceAttributesTCK.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/attributes/AbstractResourceAttributesTCK.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/attributes/AbstractResourceAttributesTCK.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/attributes/AbstractResourceAttributesTCK.java 2025-11-07 19:10:05.000000000 +0100 @@ -29,7 +29,7 @@ protected abstract PlexusIoResourceAttributes newAttributes(String mode); @Test - final void testSetOctalModeString_OwnerModes() { + final void setOctalModeStringOwnerModes() { verifyStringOctalModeSet("700", new boolean[] {true, true, true, false, false, false, false, false, false}); verifyStringOctalModeSet("600", new boolean[] {true, true, false, false, false, false, false, false, false}); verifyStringOctalModeSet("400", new boolean[] {true, false, false, false, false, false, false, false, false}); @@ -37,7 +37,7 @@ } @Test - final void testSetOctalModeString_GroupModes() { + final void setOctalModeStringGroupModes() { verifyStringOctalModeSet("070", new boolean[] {false, false, false, true, true, true, false, false, false}); verifyStringOctalModeSet("060", new boolean[] {false, false, false, true, true, false, false, false, false}); verifyStringOctalModeSet("040", new boolean[] {false, false, false, true, false, false, false, false, false}); @@ -45,7 +45,7 @@ } @Test - final void testSetOctalModeString_WorldModes() { + final void setOctalModeStringWorldModes() { verifyStringOctalModeSet("007", new boolean[] {false, false, false, false, false, false, true, true, true}); verifyStringOctalModeSet("006", new boolean[] {false, false, false, false, false, false, true, true, false}); verifyStringOctalModeSet("004", new boolean[] {false, false, false, false, false, false, true, false, false}); @@ -53,7 +53,7 @@ } @Test - final void testSetOctalMode_OwnerModes() { + final void setOctalModeOwnerModes() { verifyOctalModeSet("700", new boolean[] {true, true, true, false, false, false, false, false, false}); verifyOctalModeSet("600", new boolean[] {true, true, false, false, false, false, false, false, false}); verifyOctalModeSet("400", new boolean[] {true, false, false, false, false, false, false, false, false}); @@ -61,7 +61,7 @@ } @Test - final void testSetOctalMode_GroupModes() { + final void setOctalModeGroupModes() { verifyOctalModeSet("070", new boolean[] {false, false, false, true, true, true, false, false, false}); verifyOctalModeSet("060", new boolean[] {false, false, false, true, true, false, false, false, false}); verifyOctalModeSet("040", new boolean[] {false, false, false, true, false, false, false, false, false}); @@ -69,7 +69,7 @@ } @Test - final void testSetOctalMode_WorldModes() { + final void setOctalModeWorldModes() { verifyOctalModeSet("007", new boolean[] {false, false, false, false, false, false, true, true, true}); verifyOctalModeSet("006", new boolean[] {false, false, false, false, false, false, true, true, false}); verifyOctalModeSet("004", new boolean[] {false, false, false, false, false, false, true, false, false}); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/attributes/AttributeUtilsTest.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/attributes/AttributeUtilsTest.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/attributes/AttributeUtilsTest.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/attributes/AttributeUtilsTest.java 2025-11-07 19:10:05.000000000 +0100 @@ -1,7 +1,6 @@ package org.codehaus.plexus.components.io.attributes; import java.io.File; -import java.io.IOException; import java.nio.file.attribute.PosixFilePermission; import java.util.Set; @@ -17,9 +16,9 @@ * @author Kristian Rosenvold */ @SuppressWarnings("OctalInteger") -public class AttributeUtilsTest { +class AttributeUtilsTest { @Test - void testMiscPatterns() { + void miscPatterns() { final Set<PosixFilePermission> permissions = AttributeUtils.getPermissions(0124); assertTrue(permissions.contains(PosixFilePermission.OWNER_EXECUTE)); assertTrue(permissions.contains(PosixFilePermission.GROUP_WRITE)); @@ -27,7 +26,7 @@ } @Test - void testMorePatterns() { + void morePatterns() { final Set<PosixFilePermission> permissions = AttributeUtils.getPermissions(0241); assertTrue(permissions.contains(PosixFilePermission.OWNER_WRITE)); assertTrue(permissions.contains(PosixFilePermission.GROUP_READ)); @@ -35,7 +34,7 @@ } @Test - void testEvenMorePatterns() { + void evenMorePatterns() { final Set<PosixFilePermission> permissions = AttributeUtils.getPermissions(0412); assertTrue(permissions.contains(PosixFilePermission.OWNER_READ)); assertTrue(permissions.contains(PosixFilePermission.GROUP_EXECUTE)); @@ -50,7 +49,7 @@ @Test @DisabledOnOs(OS.WINDOWS) - void testChmodBackAndForth() throws IOException { + void chmodBackAndForth() throws Exception { final File bxx = File.createTempFile("bxx", "ff"); AttributeUtils.chmod(bxx, 0422); PlexusIoResourceAttributes firstAttrs = new FileAttributes(bxx); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/attributes/FileAttributesTest.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/attributes/FileAttributesTest.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/attributes/FileAttributesTest.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/attributes/FileAttributesTest.java 2025-11-07 19:10:05.000000000 +0100 @@ -17,6 +17,7 @@ */ import java.io.File; +import java.nio.file.Files; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledOnOs; @@ -27,12 +28,28 @@ /** * @author Kristian Rosenvold */ -public class FileAttributesTest { +class FileAttributesTest { @Test @DisabledOnOs(OS.WINDOWS) - void testGetPosixFileAttributes() throws Exception { + void getPosixFileAttributes() throws Exception { File file = new File("."); PlexusIoResourceAttributes fa = new FileAttributes(file); assertNotNull(fa); } + + @Test + void fileAttributesHandlesIOException() throws Exception { + // Test that FileAttributes can be constructed for a regular file + // even if ownership information is not available (e.g., WSL2 mapped network drives) + File tempFile = Files.createTempFile("plexus-io-test", ".tmp").toFile(); + try { + // This should not throw even if ownership info is unavailable + PlexusIoResourceAttributes fa = new FileAttributes(tempFile); + assertNotNull(fa); + // The attributes object should be usable even if userName/groupName are null + assertNotNull(fa.toString()); + } finally { + tempFile.delete(); + } + } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/attributes/PlexusIoResourceAttributeUtilsTest.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/attributes/PlexusIoResourceAttributeUtilsTest.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/attributes/PlexusIoResourceAttributeUtilsTest.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/attributes/PlexusIoResourceAttributeUtilsTest.java 2025-11-07 19:10:05.000000000 +0100 @@ -17,13 +17,11 @@ */ import java.io.File; -import java.io.IOException; import java.net.URL; import java.nio.file.NoSuchFileException; import java.util.Map; import org.codehaus.plexus.util.StringUtils; -import org.codehaus.plexus.util.cli.CommandLineException; import org.codehaus.plexus.util.cli.CommandLineUtils; import org.codehaus.plexus.util.cli.Commandline; import org.junit.jupiter.api.Test; @@ -34,11 +32,11 @@ import static org.junit.jupiter.api.Assertions.*; @SuppressWarnings("OctalInteger") -public class PlexusIoResourceAttributeUtilsTest { +class PlexusIoResourceAttributeUtilsTest { @Test @DisabledOnOs(OS.WINDOWS) - void testGetAttributesForThisTestClass() throws IOException { + void getAttributesForThisTestClass() throws Exception { URL resource = Thread.currentThread() .getContextClassLoader() .getResource(getClass().getName().replace('.', '/') + ".class"); @@ -62,7 +60,7 @@ @Test @DisabledOnOs(OS.WINDOWS) - void testDirectory() throws IOException, CommandLineException { + void directory() throws Exception { URL resource = Thread.currentThread() .getContextClassLoader() .getResource(getClass().getName().replace('.', '/') + ".class"); @@ -100,7 +98,7 @@ @Test @DisabledOnOs(OS.WINDOWS) - void testSrcResource() throws IOException { + void srcResource() throws Exception { File dir = new File("src/test/resources/symlinks"); final Map<String, PlexusIoResourceAttributes> fileAttributesByPathScreenScrape = PlexusIoResourceAttributeUtils.getFileAttributesByPath(dir, true); @@ -115,15 +113,14 @@ } @Test - void testNonExistingDirectory() { - assertThrows(NoSuchFileException.class, () -> { - File dir = new File("src/test/noSuchDirectory"); - PlexusIoResourceAttributeUtils.getFileAttributesByPath(dir, true); - }); + void nonExistingDirectory() { + File dir = new File("src/test/noSuchDirectory"); + assertThrows( + NoSuchFileException.class, () -> PlexusIoResourceAttributeUtils.getFileAttributesByPath(dir, true)); } @Test - void testMergeAttributesWithNullBase() { + void mergeAttributesWithNullBase() { PlexusIoResourceAttributes override = new SimpleResourceAttributes(1001, "myUser", 1001, "test", 0); PlexusIoResourceAttributes defaults = new SimpleResourceAttributes(1000, "defaultUser", 1000, "defaultTest", 0); @@ -135,7 +132,7 @@ } @Test - void testMergeAttributesWithNullOverrideGroup() { + void mergeAttributesWithNullOverrideGroup() { final PlexusIoResourceAttributes override = new SimpleResourceAttributes(1001, "myUser", -1, null, 0); final PlexusIoResourceAttributes defaults = new SimpleResourceAttributes(1000, "defaultUser", 1000, "defaultGroup", 0); @@ -148,7 +145,7 @@ } @Test - void testMergeAttributesOverride() { + void mergeAttributesOverride() { final PlexusIoResourceAttributes blank = new SimpleResourceAttributes(); final PlexusIoResourceAttributes invalid = new SimpleResourceAttributes(-1, null, -1, null, -1); final PlexusIoResourceAttributes override = @@ -250,7 +247,7 @@ } @Test - void testFileAttributesGeneric() throws IOException { + void fileAttributesGeneric() throws Exception { PlexusIoResourceAttributes attrs = getFileAttributes(new File("src/test/resources/symlinks/src/fileW.txt")); assertFalse(attrs.isSymbolicLink()); assertTrue(StringUtils.isNotEmpty(attrs.getUserName())); @@ -258,7 +255,7 @@ @Test @DisabledOnOs(OS.WINDOWS) - void testFileAttributes() throws IOException { + void fileAttributes() throws Exception { PlexusIoResourceAttributes attrs = getFileAttributes(new File("src/test/resources/symlinks/src/fileW.txt")); assertFalse(attrs.isSymbolicLink()); assertTrue(StringUtils.isNotEmpty(attrs.getUserName())); @@ -268,7 +265,7 @@ } @Test - void testMergeAttributesDefault() { + void mergeAttributesDefault() { final PlexusIoResourceAttributes blank = new SimpleResourceAttributes(null, null, null, null, 0); final PlexusIoResourceAttributes invalid = new SimpleResourceAttributes(-1, null, -1, null, -1); final PlexusIoResourceAttributes defaults = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/attributes/SymlinkUtilsTest.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/attributes/SymlinkUtilsTest.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/attributes/SymlinkUtilsTest.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/attributes/SymlinkUtilsTest.java 2025-11-07 19:10:05.000000000 +0100 @@ -25,15 +25,15 @@ import org.junit.jupiter.api.Test; import static java.nio.charset.StandardCharsets.UTF_8; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; -public class SymlinkUtilsTest { +class SymlinkUtilsTest { final File target = new File("target/symlinkCapabilities"); final String expected = "This is a filed that we'll be symlinking to\n"; @BeforeEach - public void setup() throws IOException { + void setup() throws IOException { FileUtils.deleteDirectory(target); Files.createDirectories(target.toPath()); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/filemappers/FileMapperTest.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/filemappers/FileMapperTest.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/filemappers/FileMapperTest.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/filemappers/FileMapperTest.java 2025-11-07 19:10:05.000000000 +0100 @@ -31,7 +31,7 @@ * Test case for the various file mappers. */ @PlexusTest -public class FileMapperTest { +class FileMapperTest { @Inject PlexusContainer container; @@ -85,7 +85,7 @@ }; @Test - void testIdentityMapper() throws Exception { + void identityMapper() throws Exception { final String[] results = getIdentityResults(); testFileMapper(new IdentityMapper(), SAMPLES, results); } @@ -98,7 +98,7 @@ } @Test - void testDefaultMapper() throws Exception { + void defaultMapper() throws Exception { final String[] results = getIdentityResults(); testFileMapper(container.lookup(FileMapper.class), SAMPLES, results); testFileMapper(container.lookup(FileMapper.class, IdentityMapper.ROLE_HINT), SAMPLES, results); @@ -106,7 +106,7 @@ } @Test - void testFileExtensionMapper() throws Exception { + void fileExtensionMapper() throws Exception { final String[] results = getIdentityResults(); for (int i = 2; i <= 10; i += 2) { results[i] += ".png"; @@ -127,7 +127,7 @@ } @Test - void testFlattenMapper() throws Exception { + void flattenMapper() throws Exception { final String[] results = getIdentityResults(); results[4] = results[6] = results[8] = results[10] = results[2]; results[5] = results[7] = results[9] = results[11] = results[3]; @@ -141,7 +141,7 @@ } @Test - void testMergeMapper() throws Exception { + void mergeMapper() throws Exception { final String[] results = getIdentityResults(); final String targetName = "zgh"; for (int i = 2; i < results.length; i++) { @@ -153,7 +153,7 @@ } @Test - void testPrefixMapper() throws Exception { + void prefixMapper() throws Exception { final String prefix = "x7Rtf"; final String[] results = getIdentityResults(); testFileMapper(new PrefixFileMapper(), SAMPLES, results); @@ -172,7 +172,7 @@ } @Test - void testSuffixMapper() throws Exception { + void suffixMapper() throws Exception { final String suffix = "suffix"; String[] samples = Arrays.copyOf(SAMPLES, SAMPLES.length + 2); samples[samples.length - 2] = "archive.tar.gz"; @@ -208,7 +208,7 @@ } @Test - void testRegExpFileMapper() throws Exception { + void regExpFileMapper() throws Exception { final String[] results = getIdentityResults(); results[3] = "xyz.jpg"; results[5] = "b/xyz.jpg"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/filemappers/FileSelectorTest.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/filemappers/FileSelectorTest.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/filemappers/FileSelectorTest.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/filemappers/FileSelectorTest.java 2025-11-07 19:10:05.000000000 +0100 @@ -39,7 +39,7 @@ * Test case for implementations of {@link FileSelector}. */ @PlexusTest -public class FileSelectorTest { +class FileSelectorTest { @Inject PlexusContainer container; @@ -80,7 +80,7 @@ } @Test - void testAllFilesFileSelector() throws Exception { + void allFilesFileSelector() throws Exception { testFileSelector(new AllFilesFileSelector()); testFileSelector((AllFilesFileSelector) container.lookup(FileSelector.class)); testFileSelector((AllFilesFileSelector) container.lookup(FileSelector.class, AllFilesFileSelector.ROLE_HINT)); @@ -114,14 +114,14 @@ } @Test - void testIncludeExcludeFileSelector() throws Exception { + void includeExcludeFileSelector() throws Exception { testFileSelector(new IncludeExcludeFileSelector()); testFileSelector((IncludeExcludeFileSelector) container.lookup(FileSelector.class, IncludeExcludeFileSelector.ROLE_HINT)); } @Test - void testIncludeExcludeFileSelector_SetExcludes() { + void includeExcludeFileSelectorSetExcludes() { IncludeExcludeFileSelector selector = new IncludeExcludeFileSelector(); // Test that the setExcludes method does not modify the excludes. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/filemappers/ResourcesTest.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/filemappers/ResourcesTest.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/filemappers/ResourcesTest.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/filemappers/ResourcesTest.java 2025-11-07 19:10:05.000000000 +0100 @@ -46,7 +46,7 @@ * Test case for resource collections. */ @PlexusTest -public class ResourcesTest { +class ResourcesTest { @Inject PlexusContainer container; @@ -67,7 +67,7 @@ private void createFiles() throws IOException { final File baseDir = getFilesDir(); - FileUtils.deleteDirectory(baseDir); + org.apache.commons.io.FileUtils.deleteDirectory(baseDir); FileUtils.mkdir(baseDir.getPath()); final File aFile = new File(baseDir, A_PATH); FileUtils.mkdir(aFile.getParentFile().getPath()); @@ -132,11 +132,11 @@ } private void compare(PlexusIoResource res, File file) throws IOException { - assertTrue(res.getLastModified() != PlexusIoResource.UNKNOWN_MODIFICATION_DATE); + assertNotSame(res.getLastModified(), PlexusIoResource.UNKNOWN_MODIFICATION_DATE); if (res instanceof PlexusIoFileResource) { assertEquals(res.getLastModified() / 1000, file.lastModified() / 1000); } - assertTrue(res.getSize() != PlexusIoResource.UNKNOWN_RESOURCE_SIZE); + assertNotSame(res.getSize(), PlexusIoResource.UNKNOWN_RESOURCE_SIZE); assertEquals(res.getSize(), file.length()); InputStream in = res.getContents(); compare(in, file); @@ -200,7 +200,7 @@ } @Test - void testFileCollection() throws Exception { + void fileCollection() throws Exception { createFiles(); testFileResourceCollection((PlexusIoFileResourceCollection) container.lookup(PlexusIoResourceCollection.class)); testFileResourceCollection((PlexusIoFileResourceCollection) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/resources/AbstractPlexusIoResourceCollectionTest.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/resources/AbstractPlexusIoResourceCollectionTest.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/resources/AbstractPlexusIoResourceCollectionTest.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/resources/AbstractPlexusIoResourceCollectionTest.java 2025-11-07 19:10:05.000000000 +0100 @@ -17,10 +17,10 @@ /** * @author Kristian Rosenvold */ -public class AbstractPlexusIoResourceCollectionTest { +class AbstractPlexusIoResourceCollectionTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testGetIncludes() throws Exception { + void getIncludes() throws Exception { AbstractPlexusIoResourceCollection sut = new AbstractPlexusIoResourceCollection() { public Iterator<PlexusIoResource> getResources() { return Arrays.asList(getResource("r1"), getResource("r2")).iterator(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/resources/PlexusIoFileResourceDeferredTest.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/resources/PlexusIoFileResourceDeferredTest.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/resources/PlexusIoFileResourceDeferredTest.java 1970-01-01 01:00:00.000000000 +0100 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/resources/PlexusIoFileResourceDeferredTest.java 2025-11-07 19:10:05.000000000 +0100 @@ -0,0 +1,115 @@ +package org.codehaus.plexus.components.io.resources; + +import java.io.File; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; + +import org.apache.commons.io.IOUtils; +import org.codehaus.plexus.components.io.attributes.FileAttributes; +import org.codehaus.plexus.components.io.functions.InputStreamTransformer; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Tests for PlexusIoFileResource with DeferredFileOutputStream scenarios. + * This specifically tests the fix for issue #118 where temp files were deleted + * before they could be accessed, causing FileNotFoundException. + */ +class PlexusIoFileResourceDeferredTest { + + @TempDir + File tempDir; + + @Test + void fileResourceWithTransformerCanReadContentsMultipleTimes() throws Exception { + // Create a test file with content larger than typical buffer size + File testFile = new File(tempDir, "test-file.txt"); + byte[] largeContent = new byte[10000]; // 10KB + for (int i = 0; i < largeContent.length; i++) { + largeContent[i] = (byte) ('A' + (i % 26)); + } + Files.write(testFile.toPath(), largeContent); + + // Create a transformer that modifies the content + InputStreamTransformer transformer = (resource, inputStream) -> { + // Simple transformer that reads and returns the same content + return inputStream; + }; + + // Create PlexusIoFileResource with transformer + PlexusIoFileResource resource = + new PlexusIoFileResource(testFile, testFile.getName(), new FileAttributes(testFile), null, transformer); + + // First read - this should work and not delete the temp file + try (InputStream is1 = resource.getContents()) { + byte[] read1 = IOUtils.toByteArray(is1); + assertEquals(largeContent.length, read1.length); + } + + // Second read - this should also work if the temp file wasn't prematurely deleted + // This is the key test - without the fix, this would throw FileNotFoundException + try (InputStream is2 = resource.getContents()) { + byte[] read2 = IOUtils.toByteArray(is2); + assertEquals(largeContent.length, read2.length); + } + } + + @Test + void fileResourceWithTransformerLargeFile() throws Exception { + // Create a large file that exceeds the DeferredFileOutputStream threshold (5MB) + File testFile = new File(tempDir, "large-test-file.bin"); + byte[] chunk = new byte[1024 * 1024]; // 1MB chunks + for (int i = 0; i < chunk.length; i++) { + chunk[i] = (byte) i; + } + + // Write 6MB to exceed the 5MB threshold + try (OutputStream os = Files.newOutputStream(testFile.toPath())) { + for (int i = 0; i < 6; i++) { + os.write(chunk); + } + } + + InputStreamTransformer transformer = (resource, inputStream) -> inputStream; + + PlexusIoFileResource resource = + new PlexusIoFileResource(testFile, testFile.getName(), new FileAttributes(testFile), null, transformer); + + // Verify we can read the content - this tests that the temp file + // created by DeferredFileOutputStream is properly accessible + long size = resource.getSize(); + assertTrue(size > 5_000_000, "File should be larger than 5MB threshold"); + + try (InputStream is = resource.getContents()) { + assertNotNull(is); + byte[] firstBytes = new byte[1024]; + int read = is.read(firstBytes); + assertEquals(1024, read); + } + } + + @Test + void fileResourceWithTransformerSmallFile() throws Exception { + // Test with a small file that stays in memory (below 5MB threshold) + File testFile = new File(tempDir, "small-test-file.txt"); + String content = "Hello, World!"; + Files.write(testFile.toPath(), content.getBytes(StandardCharsets.UTF_8)); + + InputStreamTransformer transformer = (resource, inputStream) -> inputStream; + + PlexusIoFileResource resource = + new PlexusIoFileResource(testFile, testFile.getName(), new FileAttributes(testFile), null, transformer); + + // Multiple reads should work for small files too + for (int i = 0; i < 3; i++) { + try (InputStream is = resource.getContents()) { + String readContent = IOUtils.toString(is, StandardCharsets.UTF_8); + assertEquals(content, readContent); + } + } + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/resources/PlexusIoFileSupplierResourceCollectionTest.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/resources/PlexusIoFileSupplierResourceCollectionTest.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/resources/PlexusIoFileSupplierResourceCollectionTest.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/resources/PlexusIoFileSupplierResourceCollectionTest.java 2025-11-07 19:10:05.000000000 +0100 @@ -10,9 +10,9 @@ /** * @author Kristian Rosenvold */ -public class PlexusIoFileSupplierResourceCollectionTest { +class PlexusIoFileSupplierResourceCollectionTest { @Test - void testGetName() throws Exception { + void getName() throws Exception { PlexusIoFileResourceCollection coll = new PlexusIoFileResourceCollection(); char nonSeparator = File.separatorChar == '/' ? '\\' : '/'; coll.setPrefix("fud" + nonSeparator); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/resources/PlexusIoPlexusIoFileResourceTest.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/resources/PlexusIoPlexusIoFileResourceTest.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/resources/PlexusIoPlexusIoFileResourceTest.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/resources/PlexusIoPlexusIoFileResourceTest.java 2025-11-07 19:10:05.000000000 +0100 @@ -1,7 +1,6 @@ package org.codehaus.plexus.components.io.resources; import java.io.File; -import java.io.IOException; import org.codehaus.plexus.components.io.attributes.FileAttributes; import org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributes; @@ -13,11 +12,11 @@ import static org.junit.jupiter.api.Assertions.*; -public class PlexusIoPlexusIoFileResourceTest { +class PlexusIoPlexusIoFileResourceTest { @Test @DisabledOnOs(OS.WINDOWS) - void testRealSymlink() throws IOException { + void realSymlink() throws Exception { final File file = new File("src/test/resources/symlinks/src/symDir"); PlexusIoResourceAttributes attrs = FileAttributes.uncached(file); assertTrue(attrs.isSymbolicLink()); @@ -26,13 +25,13 @@ assertTrue(r.isDirectory()); final File target = SymlinkUtils.readSymbolicLink(file); assertTrue(target.getName().endsWith("targetDir")); - assertTrue(r instanceof SymlinkDestinationSupplier); + assertInstanceOf(SymlinkDestinationSupplier.class, r); assertEquals("targetDir/", ((SymlinkDestinationSupplier) r).getSymlinkDestination()); } @Test @DisabledOnOs(OS.WINDOWS) - void testSymSymlinkFile() throws IOException { + void symSymlinkFile() throws Exception { final File file = new File("src/test/resources/symlinks/src/symSymR"); PlexusIoResource r = ResourceFactory.createResource(file); assertTrue(r.isSymbolicLink()); @@ -40,14 +39,14 @@ PlexusIoResource rL = ((PlexusIoSymlinkResource) r).getLink(); assertFalse(rL instanceof PlexusIoSymlinkResource); PlexusIoResource rT = ((PlexusIoSymlinkResource) r).getTarget(); - assertTrue(rT instanceof PlexusIoSymlinkResource); + assertInstanceOf(PlexusIoSymlinkResource.class, rT); PlexusIoResource rTT = ((PlexusIoSymlinkResource) rT).getTarget(); assertFalse(rTT instanceof PlexusIoSymlinkResource); } @Test @DisabledOnOs(OS.WINDOWS) - void testSymlinkFile() throws IOException { + void symlinkFile() throws Exception { final File file = new File("src/test/resources/symlinks/src/symR"); PlexusIoResource r = ResourceFactory.createResource(file); assertTrue(r.isSymbolicLink()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/resources/proxy/PlexusIoProxyResourceCollectionTest.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/resources/proxy/PlexusIoProxyResourceCollectionTest.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/resources/proxy/PlexusIoProxyResourceCollectionTest.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/resources/proxy/PlexusIoProxyResourceCollectionTest.java 2025-11-07 19:10:05.000000000 +0100 @@ -19,7 +19,6 @@ import javax.annotation.Nonnull; import java.io.Closeable; -import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Iterator; @@ -36,13 +35,13 @@ /** * Test case for {@link PlexusIoProxyResourceCollection}. */ -public class PlexusIoProxyResourceCollectionTest { +class PlexusIoProxyResourceCollectionTest { private final String[] SAMPLE_INCLUDES = {"junk.*", "test/**", "dir*/file.xml"}; private final String[] SAMPLE_EXCLUDES = {"*.junk", "somwhere/**"}; @Test - void testGetDefaultFileSelector() { + void getDefaultFileSelector() { PlexusIoProxyResourceCollection resCol = new PlexusIoProxyResourceCollection(null); // This will throw an exception if there is a bug @@ -91,7 +90,7 @@ } @Test - void testClosing() throws IOException { + void closing() throws Exception { final CloseableIterator closeableIterator = new CloseableIterator(); PlexusIoProxyResourceCollection resCol = new PlexusIoProxyResourceCollection(new AbstractPlexusIoResourceCollection() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/resources/proxy/ProxyFactoryTest.java new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/resources/proxy/ProxyFactoryTest.java --- old/plexus-io-plexus-io-3.5.1/src/test/java/org/codehaus/plexus/components/io/resources/proxy/ProxyFactoryTest.java 2024-09-09 14:59:21.000000000 +0200 +++ new/plexus-io-plexus-io-3.6.0/src/test/java/org/codehaus/plexus/components/io/resources/proxy/ProxyFactoryTest.java 2025-11-07 19:10:05.000000000 +0100 @@ -22,25 +22,25 @@ import static org.junit.jupiter.api.Assertions.*; -public class ProxyFactoryTest { +class ProxyFactoryTest { @Test - void testCreateProxy() throws Exception { + void createProxy() throws Exception { final PlexusIoResource proxy = ProxyFactory.createProxy(getPomResource(), null); - assertTrue(proxy instanceof ResourceAttributeSupplier); - assertTrue(proxy instanceof FileSupplier); + assertInstanceOf(ResourceAttributeSupplier.class, proxy); + assertInstanceOf(FileSupplier.class, proxy); assertFalse(proxy instanceof SymlinkDestinationSupplier); } @Test - void testCreateProxyWithNameOverride() throws Exception { + void createProxyWithNameOverride() throws Exception { NameSupplier ns = () -> "fred"; final PlexusIoResource proxy = ProxyFactory.createProxy(getPomResource(), ns); assertEquals("fred", proxy.getName()); } @Test - void testCreateProxyWithResourceAttributeOverride() throws Exception { + void createProxyWithResourceAttributeOverride() throws Exception { final PlexusIoResourceAttributes s = SimpleResourceAttributes.lastResortDummyAttributesForBrokenOS(); ResourceAttributeSupplier ns = () -> s; final PlexusIoResource proxy = ProxyFactory.createProxy(getPomResource(), ns); @@ -48,7 +48,7 @@ } @Test - void testCreateProxyWithSizeSupplierOverride() throws Exception { + void createProxyWithSizeSupplierOverride() throws Exception { final PlexusIoResourceAttributes s = SimpleResourceAttributes.lastResortDummyAttributesForBrokenOS(); SizeSupplier ns = () -> 42; final PlexusIoResource proxy = ProxyFactory.createProxy(getPomResource(), ns); @@ -56,7 +56,7 @@ } @Test - void testCreateProxyWithContentSupplierOverride() throws Exception { + void createProxyWithContentSupplierOverride() throws Exception { final InputStream s = new ByteArrayInputStream(new byte[10]); ContentSupplier ns = () -> s; final PlexusIoResource proxy = ProxyFactory.createProxy(getPomResource(), ns); @@ -64,7 +64,7 @@ } @Test - void testCreateProxyWithSymlinkDestinationSupplierOverride() throws Exception { + void createProxyWithSymlinkDestinationSupplierOverride() throws Exception { SymlinkDestinationSupplier ns = () -> "mordor"; final PlexusIoResource proxy = ProxyFactory.createProxy(getDummySymlinkResource(), ns); assertEquals("mordor", ((SymlinkDestinationSupplier) proxy).getSymlinkDestination()); ++++++ plexus-io-build.xml ++++++ --- /var/tmp/diff_new_pack.r5HRVH/_old 2026-03-01 22:15:03.350533008 +0100 +++ /var/tmp/diff_new_pack.r5HRVH/_new 2026-03-01 22:15:03.366533666 +0100 @@ -10,7 +10,7 @@ <property name="project.artifactId" value="plexus-io"/> <property name="project.groupId" value="org.codehaus.plexus"/> - <property name="project.version" value="3.5.1"/> + <property name="project.version" value="3.6.0"/> <property name="compiler.release" value="8"/> <property name="compiler.source" value="1.${compiler.release}"/>
