From e3551f906462a2d946e7610c978d7ea3f05f96a7 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 9 Aug 2012 20:09:05 +0400 Subject: [PATCH] Hardlink attributes reading test --- .../vfs/local/LocalFileSystemTest.java | 2 ++ .../util/io/FileAttributesReadingTest.java | 36 +++++++++++++++---- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/LocalFileSystemTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/LocalFileSystemTest.java index ef1d34e6fc4c..c335b1fd7d26 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/LocalFileSystemTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/LocalFileSystemTest.java @@ -235,9 +235,11 @@ public class LocalFileSystemTest extends PlatformLangTestCase { final VirtualFile file = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(targetFile); assertNotNull(file); file.setBinaryContent("hello".getBytes(), 0, 0, requestor); + assertTrue(file.getLength() > 0); final VirtualFile check = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(hardLinkFile); assertNotNull(check); + assertEquals(file.getLength(), check.getLength()); assertEquals("hello", VfsUtilCore.loadText(check)); } finally { diff --git a/platform/util/testSrc/com/intellij/openapi/util/io/FileAttributesReadingTest.java b/platform/util/testSrc/com/intellij/openapi/util/io/FileAttributesReadingTest.java index f2e683bba4da..e4f70421b128 100644 --- a/platform/util/testSrc/com/intellij/openapi/util/io/FileAttributesReadingTest.java +++ b/platform/util/testSrc/com/intellij/openapi/util/io/FileAttributesReadingTest.java @@ -30,6 +30,7 @@ import java.util.Arrays; import static com.intellij.openapi.util.io.IoTestUtil.assertTimestampsEqual; import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; import static org.junit.Assume.assumeTrue; public class FileAttributesReadingTest { @@ -66,7 +67,7 @@ public class FileAttributesReadingTest { @Test public void regularFile() throws Exception { - final File file = FileUtil.createTempFile(myTempDirectory, "test.", ".txt", true); + final File file = FileUtil.createTempFile(myTempDirectory, "test.", ".txt"); FileUtil.writeToFile(file, myTestData); assertFileAttributes(file); @@ -100,7 +101,7 @@ public class FileAttributesReadingTest { @Test public void badNames() throws Exception { - final File file = FileUtil.createTempFile(myTempDirectory, "test.", ".txt", true); + final File file = FileUtil.createTempFile(myTempDirectory, "test.", ".txt"); FileUtil.writeToFile(file, myTestData); assertFileAttributes(new File(file.getPath() + StringUtil.repeat(File.separator, 3))); @@ -110,7 +111,7 @@ public class FileAttributesReadingTest { File.separator + ".." + File.separator + myTempDirectory.getName() + File.separator + file.getName())); if (SystemInfo.isUnix) { - final File backSlashFile = FileUtil.createTempFile(myTempDirectory, "test\\", "\\txt", true); + final File backSlashFile = FileUtil.createTempFile(myTempDirectory, "test\\", "\\txt"); FileUtil.writeToFile(backSlashFile, myTestData); assertFileAttributes(backSlashFile); } @@ -132,7 +133,7 @@ public class FileAttributesReadingTest { public void linkToFile() throws Exception { assumeTrue(SystemInfo.areSymLinksSupported); - final File file = FileUtil.createTempFile(myTempDirectory, "test.", ".txt", true); + final File file = FileUtil.createTempFile(myTempDirectory, "test.", ".txt"); FileUtil.writeToFile(file, myTestData); assertTrue(file.setLastModified(file.lastModified() - 5000)); assertTrue(file.setWritable(false, false)); @@ -153,7 +154,7 @@ public class FileAttributesReadingTest { public void doubleLink() throws Exception { assumeTrue(SystemInfo.areSymLinksSupported); - final File file = FileUtil.createTempFile(myTempDirectory, "test.", ".txt", true); + final File file = FileUtil.createTempFile(myTempDirectory, "test.", ".txt"); FileUtil.writeToFile(file, myTestData); assertTrue(file.setLastModified(file.lastModified() - 5000)); assertTrue(file.setWritable(false, false)); @@ -252,7 +253,7 @@ public class FileAttributesReadingTest { prefix, ".dir"), prefix, ".dir"), prefix, ".dir"); - final File file = FileUtil.createTempFile(dir, prefix, ".txt", true); + final File file = FileUtil.createTempFile(dir, prefix, ".txt"); assertTrue(file.exists()); FileUtil.writeToFile(file, myTestData); @@ -266,7 +267,7 @@ public class FileAttributesReadingTest { public void subst() throws Exception { assumeTrue(SystemInfo.isWindows); - FileUtil.createTempFile(myTempDirectory, "test.", ".txt", true); // just to populate a directory + FileUtil.createTempFile(myTempDirectory, "test.", ".txt"); // just to populate a directory final File substRoot = IoTestUtil.createSubst(myTempDirectory.getPath()); try { final FileAttributes attributes = getAttributes(substRoot); @@ -278,6 +279,27 @@ public class FileAttributesReadingTest { } } + @Test + public void hardLink() throws Exception { + final File target = FileUtil.createTempFile(myTempDirectory, "test.", ".txt"); + final File link = IoTestUtil.createHardLink(target.getPath(), myTempDirectory.getPath() + "/link"); + + FileAttributes attributes = getAttributes(link); + assertEquals(FileAttributes.Type.FILE, attributes.type); + assertEquals(target.length(), attributes.length); + assertTimestampsEqual(target.lastModified(), attributes.lastModified); + + FileUtil.writeToFile(target, myTestData); + assertTrue(target.setLastModified(attributes.lastModified - 5000)); + assertTrue(target.length() > 0); + assertTimestampsEqual(attributes.lastModified - 5000, target.lastModified()); + + attributes = getAttributes(link); + assertEquals(FileAttributes.Type.FILE, attributes.type); + assertEquals(target.length(), attributes.length); + assertTimestampsEqual(target.lastModified(), attributes.lastModified); + } + @NotNull private static FileAttributes getAttributes(@NotNull final File file) { final FileAttributes attributes = FileSystemUtil.getAttributes(file);