--- a/masterfs/test/unit/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/FileObjTest.java Fri Jan 24 10:50:59 2014 +0100 +++ a/masterfs/test/unit/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/FileObjTest.java Fri Jan 24 14:04:10 2014 +0100 @@ -46,6 +46,7 @@ import java.io.File; import java.io.IOException; import java.io.OutputStream; +import java.nio.file.Files; import java.util.Arrays; import java.util.List; import java.util.logging.Handler; @@ -55,6 +56,7 @@ import org.netbeans.junit.NbTestCase; import org.netbeans.modules.masterfs.filebasedfs.FileUtilTest.EventType; import org.netbeans.modules.masterfs.filebasedfs.FileUtilTest.TestFileChangeListener; +import org.openide.filesystems.FileEvent; import org.openide.filesystems.FileLock; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; @@ -72,6 +74,11 @@ } @Override + protected void setUp() throws Exception { + clearWorkDir(); + } + + @Override protected int timeOut() { return 60000; } @@ -227,4 +234,37 @@ } } } + + /** + * Test for bug 240180 - AssertionError: Need to normalize - different file + * name case. + * + * @throws IOException + */ + @SuppressWarnings("ResultOfObjectAllocationIgnored") + public void testNormalizedAfterCaseChange() throws IOException { + + File wd = getWorkDir(); + FileObject wdFo = FileUtil.toFileObject(wd); + File inner = new File(wd, "test.txt"); + inner.createNewFile(); + if (!new File(wd, "Test.txt").exists()) { + System.out.println("Skipping test " + getName() + + " on a case-sensitive filesystem"); + return; + } + wdFo.refresh(); + FileObject innerFo = FileUtil.toFileObject(inner); + assertEquals("test.txt", FileUtil.toFile(innerFo).getName()); + inner.delete(); // delete... + File inner2 = new File(wd, "Test.txt"); //...and create with uppercase T + inner2.createNewFile(); + assertTrue(Files.exists(inner.toPath())); + assertEquals("Test.txt", inner.getCanonicalFile().getName()); + wdFo.refresh(); + new FileEvent(innerFo); // clear cache for normalized files + + File toFile = FileUtil.toFile(innerFo); // AssertionError here. + assertEquals("Test.txt", toFile.getName()); + } }