diff options
Diffstat (limited to 'src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java')
-rw-r--r-- | src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java b/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java index 555916cac..5a168a514 100644 --- a/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java +++ b/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java @@ -26,6 +26,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.PosixFileAttributeView; import java.nio.file.attribute.PosixFilePermission; +import java.nio.file.attribute.PosixFilePermissions; import java.util.Locale; import java.util.Optional; import java.util.Set; @@ -119,6 +120,39 @@ public class FileUtilsTest { assertNotEquals(thirdModTime, secondModTime); } + /** + * test file permissions for FileUtils#rename. + * Since Ant1.10.7, ant uses FileUtils#rename for various tasks (eg. ReplaceRegExp). + * Test that file permission set stays the same. + * @see FileUtils#rename(java.io.File, java.io.File, boolean) + * @throws IOException if something goes wrong + */ + @Test + public void testFilePermissions() throws IOException { + assumeFalse("Test doesn't run on DOS", Os.isFamily("dos")); + File removeThis = getFileUtils().createTempFile("permis", "sion", folder.getRoot(), true, true); + File toBeMoved1 = getFileUtils().createTempFile("permis", "sion", folder.getRoot(), true, true); + File toBeMoved2 = getFileUtils().createTempFile("permis", "sion", folder.getRoot(), true, true); + try (FileOutputStream fos = new FileOutputStream(removeThis)) { + fos.write(new byte[0]); + } + try (FileOutputStream fos = new FileOutputStream(toBeMoved1)) { + fos.write(new byte[0]); + } + try (FileOutputStream fos = new FileOutputStream(toBeMoved2)) { + fos.write(new byte[0]); + } + Set<PosixFilePermission> allAllowed = PosixFilePermissions.fromString("rwxrwxrwx"); + Files.setPosixFilePermissions(removeThis.toPath(), allAllowed); + + getFileUtils().rename(toBeMoved1, removeThis, true); + assertEquals(allAllowed,Files.getPosixFilePermissions(removeThis.toPath())); + + Set<PosixFilePermission> tempAllowed = Files.getPosixFilePermissions(toBeMoved2.toPath()); + getFileUtils().rename(toBeMoved2, removeThis); + assertEquals(tempAllowed,Files.getPosixFilePermissions(removeThis.toPath())); + } + @Test public void testResolveFilePosix() { assumeTrue("DOS or NetWare", !Os.isFamily("dos") && !Os.isFamily("netware")); |