From da1109083a1f0e1a97a6fa78cc0090fc39b95b80 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Tue, 26 Jul 2022 19:27:57 +0200 Subject: [PATCH 1/3] [MSHARED-1112] Test case for NoSuchFileException while copying symbolic link with relative non-existing target --- .../maven/shared/utils/io/FileUtilsTest.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/apache/maven/shared/utils/io/FileUtilsTest.java b/src/test/java/org/apache/maven/shared/utils/io/FileUtilsTest.java index 51cfb177..1f0aed92 100644 --- a/src/test/java/org/apache/maven/shared/utils/io/FileUtilsTest.java +++ b/src/test/java/org/apache/maven/shared/utils/io/FileUtilsTest.java @@ -39,6 +39,8 @@ import java.io.Writer; import java.net.URL; import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; @@ -445,7 +447,7 @@ public void copyFileWithNoFiltersAndLastModifiedDateOfZeroAndNoDestination() { File from = write( "from.txt", - MODIFIED_YESTERDAY, + 0, "Hello World!" ); File to = new File( @@ -453,7 +455,6 @@ public void copyFileWithNoFiltersAndLastModifiedDateOfZeroAndNoDestination() "to.txt" ); - from.setLastModified( 0 ); FileUtils.copyFile( from, to, null, (FileUtils.FilterWrapper[]) null ); assertTrue( @@ -463,6 +464,28 @@ public void copyFileWithNoFiltersAndLastModifiedDateOfZeroAndNoDestination() assertFileContent( to, "Hello World!" ); } + @Test + public void copyRelativeSymbolicLinkFileWithNonExistingTargetWithNoFiltersAndNoDestination() + throws Exception + { + + File target = write( + "target.txt", + MODIFIED_YESTERDAY, + "Hello World!" + ); + // must be a relative symbolic link + Path from = Files.createSymbolicLink( new File(tempFolder.getRoot(), "symLink").toPath(), Paths.get( "target.txt" ) ); + File to = new File( + tempFolder.newFolder( "destDirectory" ), + "toSymLink" + ); + // this create a symlink in a newfolder pointing to a non-existing relative target "./target.txt" + FileUtils.copyFile( from.toFile(), to, null, (FileUtils.FilterWrapper[]) null ); + + // this should not fail + } + @Test public void copyFileWithNoFiltersAndOutdatedDestination() throws Exception From 8ff14a538e13399fbc307c6c3d8cf98437104364 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Wed, 27 Jul 2022 08:34:45 +0200 Subject: [PATCH 2/3] Add test for symbolic link whose target does not even exist for the source symlink file --- .../maven/shared/utils/io/FileUtilsTest.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/test/java/org/apache/maven/shared/utils/io/FileUtilsTest.java b/src/test/java/org/apache/maven/shared/utils/io/FileUtilsTest.java index 1f0aed92..3d909e9f 100644 --- a/src/test/java/org/apache/maven/shared/utils/io/FileUtilsTest.java +++ b/src/test/java/org/apache/maven/shared/utils/io/FileUtilsTest.java @@ -468,19 +468,34 @@ public void copyFileWithNoFiltersAndLastModifiedDateOfZeroAndNoDestination() public void copyRelativeSymbolicLinkFileWithNonExistingTargetWithNoFiltersAndNoDestination() throws Exception { - - File target = write( + write( "target.txt", MODIFIED_YESTERDAY, "Hello World!" ); - // must be a relative symbolic link + // must be a relative symbolic link to existing target Path from = Files.createSymbolicLink( new File(tempFolder.getRoot(), "symLink").toPath(), Paths.get( "target.txt" ) ); File to = new File( tempFolder.newFolder( "destDirectory" ), "toSymLink" ); - // this create a symlink in a newfolder pointing to a non-existing relative target "./target.txt" + // this creates a symlink in a new folder pointing to a non-existing relative target "./target.txt" + FileUtils.copyFile( from.toFile(), to, null, (FileUtils.FilterWrapper[]) null ); + + // this should not fail + } + + @Test + public void copySymbolicLinkFileWithNonExistingTargetWithNoFiltersAndNoDestination() + throws Exception + { + // link to non existing target + Path from = Files.createSymbolicLink( new File(tempFolder.getRoot(), "symLink").toPath(), Paths.get( "non-existing.txt" ) ); + File to = new File( + tempFolder.getRoot(), + "toSymLink" + ); + // this creates a symlink in a new folder pointing to a non-existing relative target "./target.txt" FileUtils.copyFile( from.toFile(), to, null, (FileUtils.FilterWrapper[]) null ); // this should not fail From ab4ca124a56deb8414422f4002786b65808e6351 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Sun, 1 Jan 2023 20:53:50 +0100 Subject: [PATCH 3/3] Update src/test/java/org/apache/maven/shared/utils/io/FileUtilsTest.java --- .../java/org/apache/maven/shared/utils/io/FileUtilsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/apache/maven/shared/utils/io/FileUtilsTest.java b/src/test/java/org/apache/maven/shared/utils/io/FileUtilsTest.java index 3d909e9f..77cc4ede 100644 --- a/src/test/java/org/apache/maven/shared/utils/io/FileUtilsTest.java +++ b/src/test/java/org/apache/maven/shared/utils/io/FileUtilsTest.java @@ -495,7 +495,7 @@ public void copySymbolicLinkFileWithNonExistingTargetWithNoFiltersAndNoDestinati tempFolder.getRoot(), "toSymLink" ); - // this creates a symlink in a new folder pointing to a non-existing relative target "./target.txt" + // this creates a symlink in a new folder pointing to a non-existing relative target "./non-existing.txt" FileUtils.copyFile( from.toFile(), to, null, (FileUtils.FilterWrapper[]) null ); // this should not fail