@Test
public void testSymbolicLinkUtilsMethods() throws Exception {
buildRule.executeTarget("test-fileutils");
SymbolicLinkUtils su = SymbolicLinkUtils.getSymbolicLinkUtils();
java.io.File f = new File(buildRule.getOutputDir(), "file1");
assertTrue(f.exists());
assertFalse(f.isDirectory());
assertTrue(f.isFile());
assertFalse(su.isSymbolicLink(f.getAbsolutePath()));
assertFalse(su.isSymbolicLink(f.getParentFile(),
f.getName()));
assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
f.getName()));
f = new File(buildRule.getOutputDir(), "dir1");
assertTrue(f.exists());
assertTrue(f.isDirectory());
assertFalse(f.isFile());
assertFalse(su.isSymbolicLink(f.getAbsolutePath()));
assertFalse(su.isSymbolicLink(f.getParentFile(),
f.getName()));
assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
f.getName()));
f = new File(buildRule.getOutputDir(), "file2");
assertFalse(f.exists());
assertFalse(f.isDirectory());
assertFalse(f.isFile());
assertFalse(su.isSymbolicLink(f.getAbsolutePath()));
assertFalse(su.isSymbolicLink(f.getParentFile(),
f.getName()));
assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
f.getName()));
f = new File(buildRule.getOutputDir(), "dir2");
assertFalse(f.exists());
assertFalse(f.isDirectory());
assertFalse(f.isFile());
assertFalse(su.isSymbolicLink(f.getAbsolutePath()));
assertFalse(su.isSymbolicLink(f.getParentFile(),
f.getName()));
assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
f.getName()));
f = new File(buildRule.getOutputDir(), "file.there");
assertTrue(f.exists());
assertFalse(f.isDirectory());
assertTrue(f.isFile());
assertTrue(su.isSymbolicLink(f.getAbsolutePath()));
assertTrue(su.isSymbolicLink(f.getParentFile(),
f.getName()));
assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
f.getName()));
f = new File(buildRule.getOutputDir(), "dir.there");
assertTrue(f.exists());
assertTrue(f.isDirectory());
assertFalse(f.isFile());
assertTrue(su.isSymbolicLink(f.getAbsolutePath()));
assertTrue(su.isSymbolicLink(f.getParentFile(),
f.getName()));
assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath()));
assertFalse(su.isDanglingSymbolicLink(f.getParentFile(),
f.getName()));
// it is not possible to find out that symbolic links pointing
// to inexistent files or directories are symbolic links
// it used to be possible to detect this on Mac
// this is not true under Snow Leopard and JDK 1.5
// Removing special handling of MacOS until someone shouts
// Antoine
f = new File(buildRule.getOutputDir(), "file.notthere");
assertFalse(f.exists());
assertFalse(f.isDirectory());
assertFalse(f.isFile());
assertTrue(su.isSymbolicLink(f.getAbsolutePath()) == false);
assertTrue(su.isSymbolicLink(f.getParentFile(), f.getName()) == false);
assertTrue(su.isDanglingSymbolicLink(f.getAbsolutePath()));
assertTrue(su.isDanglingSymbolicLink(f.getParentFile(),
f.getName()));
f = new File(buildRule.getOutputDir(), "dir.notthere");
assertFalse(f.exists());
assertFalse(f.isDirectory());
assertFalse(f.isFile());
assertTrue(su.isSymbolicLink(f.getAbsolutePath()) == false);
assertTrue(su.isSymbolicLink(f.getParentFile(), f.getName()) == false);
assertTrue(su.isDanglingSymbolicLink(f.getAbsolutePath()));
assertTrue(su.isDanglingSymbolicLink(f.getParentFile(),
f.getName()));
}