git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@702350 13f79535-47bb-0310-9956-ffa450edef68master
@@ -42,6 +42,7 @@ import org.apache.tools.ant.types.selectors.TokenizedPath; | |||||
import org.apache.tools.ant.types.selectors.TokenizedPattern; | import org.apache.tools.ant.types.selectors.TokenizedPattern; | ||||
import org.apache.tools.ant.util.CollectionUtils; | import org.apache.tools.ant.util.CollectionUtils; | ||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.apache.tools.ant.util.SymbolicLinkUtils; | |||||
import org.apache.tools.ant.util.VectorSet; | import org.apache.tools.ant.util.VectorSet; | ||||
/** | /** | ||||
@@ -187,6 +188,10 @@ public class DirectoryScanner | |||||
/** Helper. */ | /** Helper. */ | ||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | ||||
/** Helper. */ | |||||
private static final SymbolicLinkUtils SYMLINK_UTILS = | |||||
SymbolicLinkUtils.getSymbolicLinkUtils(); | |||||
/** | /** | ||||
* Patterns which should be excluded by default. | * Patterns which should be excluded by default. | ||||
* | * | ||||
@@ -821,8 +826,7 @@ public class DirectoryScanner | |||||
excludes = nullExcludes ? new String[0] : excludes; | excludes = nullExcludes ? new String[0] : excludes; | ||||
if (basedir != null && !followSymlinks | if (basedir != null && !followSymlinks | ||||
&& FILE_UTILS.isSymbolicLink(basedir.getParentFile(), | |||||
basedir.getName())) { | |||||
&& SYMLINK_UTILS.isSymbolicLink(basedir)) { | |||||
basedir = null; | basedir = null; | ||||
} | } | ||||
@@ -1178,7 +1182,7 @@ public class DirectoryScanner | |||||
ArrayList noLinks = new ArrayList(); | ArrayList noLinks = new ArrayList(); | ||||
for (int i = 0; i < newfiles.length; i++) { | for (int i = 0; i < newfiles.length; i++) { | ||||
try { | try { | ||||
if (FILE_UTILS.isSymbolicLink(dir, newfiles[i])) { | |||||
if (SYMLINK_UTILS.isSymbolicLink(dir, newfiles[i])) { | |||||
String name = vpath + newfiles[i]; | String name = vpath + newfiles[i]; | ||||
File file = new File(dir, newfiles[i]); | File file = new File(dir, newfiles[i]); | ||||
(file.isDirectory() | (file.isDirectory() | ||||
@@ -1788,7 +1792,7 @@ public class DirectoryScanner | |||||
if (directoryNamesFollowed.size() >= maxLevelsOfSymlinks | if (directoryNamesFollowed.size() >= maxLevelsOfSymlinks | ||||
&& CollectionUtils.frequency(directoryNamesFollowed, dirName) | && CollectionUtils.frequency(directoryNamesFollowed, dirName) | ||||
>= maxLevelsOfSymlinks | >= maxLevelsOfSymlinks | ||||
&& FILE_UTILS.isSymbolicLink(parent, dirName)) { | |||||
&& SYMLINK_UTILS.isSymbolicLink(parent, dirName)) { | |||||
ArrayList files = new ArrayList(); | ArrayList files = new ArrayList(); | ||||
File f = FILE_UTILS.resolveFile(parent, dirName); | File f = FILE_UTILS.resolveFile(parent, dirName); | ||||
@@ -57,7 +57,7 @@ import org.apache.tools.ant.types.selectors.FilenameSelector; | |||||
import org.apache.tools.ant.types.selectors.MajoritySelector; | import org.apache.tools.ant.types.selectors.MajoritySelector; | ||||
import org.apache.tools.ant.types.selectors.ContainsRegexpSelector; | import org.apache.tools.ant.types.selectors.ContainsRegexpSelector; | ||||
import org.apache.tools.ant.types.selectors.modifiedselector.ModifiedSelector; | import org.apache.tools.ant.types.selectors.modifiedselector.ModifiedSelector; | ||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.util.SymbolicLinkUtils; | |||||
/** | /** | ||||
* Deletes a file or directory, or set of files defined by a fileset. | * Deletes a file or directory, or set of files defined by a fileset. | ||||
@@ -107,14 +107,15 @@ public class Delete extends MatchingTask { | |||||
protected boolean usedMatchingTask = false; | protected boolean usedMatchingTask = false; | ||||
// by default, remove matching empty dirs | // by default, remove matching empty dirs | ||||
protected boolean includeEmpty = false; | protected boolean includeEmpty = false; | ||||
// CheckStyle:VisibilityModifier ON | |||||
private int verbosity = Project.MSG_VERBOSE; | private int verbosity = Project.MSG_VERBOSE; | ||||
private boolean quiet = false; | private boolean quiet = false; | ||||
private boolean failonerror = true; | private boolean failonerror = true; | ||||
private boolean deleteOnExit = false; | private boolean deleteOnExit = false; | ||||
private Resources rcs = null; | private Resources rcs = null; | ||||
private static FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
// CheckStyle:VisibilityModifier ON | |||||
private static SymbolicLinkUtils SYMLINK_UTILS = | |||||
SymbolicLinkUtils.getSymbolicLinkUtils(); | |||||
/** | /** | ||||
* Set the name of a single file to be removed. | * Set the name of a single file to be removed. | ||||
@@ -760,8 +761,7 @@ public class Delete extends MatchingTask { | |||||
private boolean isDanglingSymlink(File f) { | private boolean isDanglingSymlink(File f) { | ||||
try { | try { | ||||
return FILE_UTILS.isDanglingSymbolicLink(f.getParentFile(), | |||||
f.getName()); | |||||
return SYMLINK_UTILS.isDanglingSymbolicLink(f); | |||||
} catch (java.io.IOException e) { | } catch (java.io.IOException e) { | ||||
log("Error while trying to detect " + f.getAbsolutePath() | log("Error while trying to detect " + f.getAbsolutePath() | ||||
+ " as broken symbolic link. " + e.getMessage(), | + " as broken symbolic link. " + e.getMessage(), | ||||
@@ -54,6 +54,7 @@ import org.apache.tools.ant.taskdefs.Execute; | |||||
import org.apache.tools.ant.taskdefs.LogOutputStream; | import org.apache.tools.ant.taskdefs.LogOutputStream; | ||||
import org.apache.tools.ant.types.FileSet; | import org.apache.tools.ant.types.FileSet; | ||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.apache.tools.ant.util.SymbolicLinkUtils; | |||||
/** | /** | ||||
* Creates, Deletes, Records and Restores Symlinks. | * Creates, Deletes, Records and Restores Symlinks. | ||||
@@ -114,6 +115,8 @@ import org.apache.tools.ant.util.FileUtils; | |||||
*/ | */ | ||||
public class Symlink extends DispatchTask { | public class Symlink extends DispatchTask { | ||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | ||||
private static final SymbolicLinkUtils SYMLINK_UTILS = | |||||
SymbolicLinkUtils.getSymbolicLinkUtils(); | |||||
private String resource; | private String resource; | ||||
private String link; | private String link; | ||||
@@ -212,7 +215,7 @@ public class Symlink extends DispatchTask { | |||||
// handle the case where lnk points to a directory (bug 25181) | // handle the case where lnk points to a directory (bug 25181) | ||||
try { | try { | ||||
File test = new File(lnk); | File test = new File(lnk); | ||||
if (!FILE_UTILS.isSymbolicLink(null, lnk)) { | |||||
if (!SYMLINK_UTILS.isSymbolicLink(lnk)) { | |||||
doLink(res, lnk); | doLink(res, lnk); | ||||
} else if (!test.getCanonicalPath().equals( | } else if (!test.getCanonicalPath().equals( | ||||
new File(res).getCanonicalPath())) { | new File(res).getCanonicalPath())) { | ||||
@@ -466,14 +469,14 @@ public class Symlink extends DispatchTask { | |||||
*/ | */ | ||||
public static void deleteSymlink(File linkfil, Task task) | public static void deleteSymlink(File linkfil, Task task) | ||||
throws IOException { | throws IOException { | ||||
if (FILE_UTILS.isDanglingSymbolicLink(linkfil.getParentFile(), | |||||
linkfil.getName())) { | |||||
if (SYMLINK_UTILS.isDanglingSymbolicLink(linkfil.getParentFile(), | |||||
linkfil.getName())) { | |||||
linkfil.delete(); | linkfil.delete(); | ||||
return; | return; | ||||
} | } | ||||
if (!FILE_UTILS.isSymbolicLink(linkfil.getParentFile(), | |||||
linkfil.getName())) { | |||||
if (!SYMLINK_UTILS.isSymbolicLink(linkfil.getParentFile(), | |||||
linkfil.getName())) { | |||||
// plain file, not a link | // plain file, not a link | ||||
return; | return; | ||||
} | } | ||||
@@ -641,7 +644,7 @@ public class Symlink extends DispatchTask { | |||||
File f = new File(dir, fnd[j][k]); | File f = new File(dir, fnd[j][k]); | ||||
File pf = f.getParentFile(); | File pf = f.getParentFile(); | ||||
String name = f.getName(); | String name = f.getName(); | ||||
if (FILE_UTILS.isSymbolicLink(pf, name)) { | |||||
if (SYMLINK_UTILS.isSymbolicLink(pf, name)) { | |||||
result.add(new File(pf.getCanonicalFile(), name)); | result.add(new File(pf.getCanonicalFile(), name)); | ||||
} | } | ||||
} catch (IOException e) { | } catch (IOException e) { | ||||
@@ -22,6 +22,7 @@ import java.io.File; | |||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.apache.tools.ant.util.SymbolicLinkUtils; | |||||
/** | /** | ||||
* Container for a path that has been split into its components. | * Container for a path that has been split into its components. | ||||
@@ -37,6 +38,9 @@ public class TokenizedPath { | |||||
/** Helper. */ | /** Helper. */ | ||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | ||||
/** Helper. */ | |||||
private static final SymbolicLinkUtils SYMLINK_UTILS = | |||||
SymbolicLinkUtils.getSymbolicLinkUtils(); | |||||
/** iterations for case-sensitive scanning. */ | /** iterations for case-sensitive scanning. */ | ||||
private static final boolean[] CS_SCAN_ONLY = new boolean[] {true}; | private static final boolean[] CS_SCAN_ONLY = new boolean[] {true}; | ||||
/** iterations for non-case-sensitive scanning. */ | /** iterations for non-case-sensitive scanning. */ | ||||
@@ -134,7 +138,12 @@ public class TokenizedPath { | |||||
public boolean isSymlink(File base) { | public boolean isSymlink(File base) { | ||||
for (int i = 0; i < tokenizedPath.length; i++) { | for (int i = 0; i < tokenizedPath.length; i++) { | ||||
try { | try { | ||||
if (FILE_UTILS.isSymbolicLink(base, tokenizedPath[i])) { | |||||
if ((base != null | |||||
&& SYMLINK_UTILS.isSymbolicLink(base, tokenizedPath[i])) | |||||
|| | |||||
(base == null | |||||
&& SYMLINK_UTILS.isSymbolicLink(tokenizedPath[i])) | |||||
) { | |||||
return true; | return true; | ||||
} | } | ||||
base = new File(base, tokenizedPath[i]); | base = new File(base, tokenizedPath[i]); | ||||
@@ -1039,57 +1039,15 @@ public class FileUtils { | |||||
* @return true if the file is a symbolic link. | * @return true if the file is a symbolic link. | ||||
* @throws IOException on error. | * @throws IOException on error. | ||||
* @since Ant 1.5 | * @since Ant 1.5 | ||||
* @deprecated use SymbolicLinkUtils instead | |||||
*/ | */ | ||||
public boolean isSymbolicLink(File parent, String name) | public boolean isSymbolicLink(File parent, String name) | ||||
throws IOException { | throws IOException { | ||||
SymbolicLinkUtils u = SymbolicLinkUtils.getSymbolicLinkUtils(); | |||||
if (parent == null) { | if (parent == null) { | ||||
File f = new File(name); | |||||
parent = f.getParentFile(); | |||||
name = f.getName(); | |||||
return u.isSymbolicLink(name); | |||||
} | } | ||||
File toTest = new File(parent.getCanonicalPath(), name); | |||||
return !toTest.getAbsolutePath().equals(toTest.getCanonicalPath()); | |||||
} | |||||
/** | |||||
* Checks whether a given file is a broken symbolic link. | |||||
* | |||||
* <p>It doesn't really test for symbolic links but whether Java | |||||
* reports that the File doesn't exist but its parent's child list | |||||
* contains it--this may lead to false positives on some | |||||
* platforms.</p> | |||||
* | |||||
* <p>Note that #isSymbolicLink returns false if this method | |||||
* returns true since Java won't produce a canonical name | |||||
* different from the abolute one if the link is broken.</p> | |||||
* | |||||
* @param parent the parent directory of the file to test | |||||
* @param name the name of the file to test. | |||||
* | |||||
* @return true if the file is a broken symbolic link. | |||||
* @throws IOException on error. | |||||
* @since Ant 1.8.0 | |||||
*/ | |||||
public boolean isDanglingSymbolicLink(File parent, String name) | |||||
throws IOException { | |||||
File f = null; | |||||
if (parent == null) { | |||||
f = new File(name); | |||||
parent = f.getParentFile(); | |||||
name = f.getName(); | |||||
} else { | |||||
f = new File(parent, name); | |||||
} | |||||
if (!f.exists()) { | |||||
final String localName = f.getName(); | |||||
String[] c = parent.list(new FilenameFilter() { | |||||
public boolean accept(File d, String n) { | |||||
return localName.equals(n); | |||||
} | |||||
}); | |||||
return c != null && c.length > 0; | |||||
} | |||||
return false; | |||||
return u.isSymbolicLink(parent, name); | |||||
} | } | ||||
/** | /** | ||||
@@ -0,0 +1,182 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
* | |||||
*/ | |||||
package org.apache.tools.ant.util; | |||||
import java.io.File; | |||||
import java.io.FilenameFilter; | |||||
import java.io.IOException; | |||||
/** | |||||
* Contains methods related to symbolic links - or what Ant thinks is | |||||
* a symbolic link based on the absent support for them in Java. | |||||
* | |||||
* @since Ant 1.8.0 | |||||
*/ | |||||
public class SymbolicLinkUtils { | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
/** | |||||
* Shared instance. | |||||
*/ | |||||
private static final SymbolicLinkUtils PRIMARY_INSTANCE = | |||||
new SymbolicLinkUtils(); | |||||
/** | |||||
* Method to retrieve The SymbolicLinkUtils, which is shared by | |||||
* all users of this method. | |||||
* @return an instance of SymbolicLinkUtils. | |||||
*/ | |||||
public static SymbolicLinkUtils getSymbolicLinkUtils() { | |||||
// keep the door open for Java X.Y specific subclass if symbolic | |||||
// links ever become supported in the classlib | |||||
return PRIMARY_INSTANCE; | |||||
} | |||||
/** | |||||
* Empty constructor. | |||||
*/ | |||||
protected SymbolicLinkUtils() { | |||||
} | |||||
/** | |||||
* Checks whether a given file is a symbolic link. | |||||
* | |||||
* <p>It doesn't really test for symbolic links but whether the | |||||
* canonical and absolute paths of the file are identical--this | |||||
* may lead to false positives on some platforms.</p> | |||||
* | |||||
* @param file the file to test. | |||||
* | |||||
* @return true if the file is a symbolic link. | |||||
* @throws IOException on error. | |||||
*/ | |||||
public boolean isSymbolicLink(File file) throws IOException { | |||||
return isSymbolicLink(file.getParentFile(), file.getName()); | |||||
} | |||||
/** | |||||
* Checks whether a given file is a symbolic link. | |||||
* | |||||
* <p>It doesn't really test for symbolic links but whether the | |||||
* canonical and absolute paths of the file are identical--this | |||||
* may lead to false positives on some platforms.</p> | |||||
* | |||||
* @param name the name of the file to test. | |||||
* | |||||
* @return true if the file is a symbolic link. | |||||
* @throws IOException on error. | |||||
*/ | |||||
public boolean isSymbolicLink(String name) throws IOException { | |||||
return isSymbolicLink(new File(name)); | |||||
} | |||||
/** | |||||
* Checks whether a given file is a symbolic link. | |||||
* | |||||
* <p>It doesn't really test for symbolic links but whether the | |||||
* canonical and absolute paths of the file are identical--this | |||||
* may lead to false positives on some platforms.</p> | |||||
* | |||||
* @param parent the parent directory of the file to test | |||||
* @param name the name of the file to test. | |||||
* | |||||
* @return true if the file is a symbolic link. | |||||
* @throws IOException on error. | |||||
*/ | |||||
public boolean isSymbolicLink(File parent, String name) | |||||
throws IOException { | |||||
File toTest = new File(parent.getCanonicalPath(), name); | |||||
return !toTest.getAbsolutePath().equals(toTest.getCanonicalPath()); | |||||
} | |||||
/** | |||||
* Checks whether a given file is a broken symbolic link. | |||||
* | |||||
* <p>It doesn't really test for symbolic links but whether Java | |||||
* reports that the File doesn't exist but its parent's child list | |||||
* contains it--this may lead to false positives on some | |||||
* platforms.</p> | |||||
* | |||||
* <p>Note that #isSymbolicLink returns false if this method | |||||
* returns true since Java won't produce a canonical name | |||||
* different from the abolute one if the link is broken.</p> | |||||
* | |||||
* @param name the name of the file to test. | |||||
* | |||||
* @return true if the file is a broken symbolic link. | |||||
* @throws IOException on error. | |||||
*/ | |||||
public boolean isDanglingSymbolicLink(String name) throws IOException { | |||||
return isDanglingSymbolicLink(new File(name)); | |||||
} | |||||
/** | |||||
* Checks whether a given file is a broken symbolic link. | |||||
* | |||||
* <p>It doesn't really test for symbolic links but whether Java | |||||
* reports that the File doesn't exist but its parent's child list | |||||
* contains it--this may lead to false positives on some | |||||
* platforms.</p> | |||||
* | |||||
* <p>Note that #isSymbolicLink returns false if this method | |||||
* returns true since Java won't produce a canonical name | |||||
* different from the abolute one if the link is broken.</p> | |||||
* | |||||
* @param file the file to test. | |||||
* | |||||
* @return true if the file is a broken symbolic link. | |||||
* @throws IOException on error. | |||||
*/ | |||||
public boolean isDanglingSymbolicLink(File file) throws IOException { | |||||
return isDanglingSymbolicLink(file.getParentFile(), file.getName()); | |||||
} | |||||
/** | |||||
* Checks whether a given file is a broken symbolic link. | |||||
* | |||||
* <p>It doesn't really test for symbolic links but whether Java | |||||
* reports that the File doesn't exist but its parent's child list | |||||
* contains it--this may lead to false positives on some | |||||
* platforms.</p> | |||||
* | |||||
* <p>Note that #isSymbolicLink returns false if this method | |||||
* returns true since Java won't produce a canonical name | |||||
* different from the abolute one if the link is broken.</p> | |||||
* | |||||
* @param parent the parent directory of the file to test | |||||
* @param name the name of the file to test. | |||||
* | |||||
* @return true if the file is a broken symbolic link. | |||||
* @throws IOException on error. | |||||
*/ | |||||
public boolean isDanglingSymbolicLink(File parent, String name) | |||||
throws IOException { | |||||
File f = new File(parent, name); | |||||
if (!f.exists()) { | |||||
final String localName = f.getName(); | |||||
String[] c = parent.list(new FilenameFilter() { | |||||
public boolean accept(File d, String n) { | |||||
return localName.equals(n); | |||||
} | |||||
}); | |||||
return c != null && c.length > 0; | |||||
} | |||||
return false; | |||||
} | |||||
} |
@@ -20,6 +20,7 @@ package org.apache.tools.ant; | |||||
import org.apache.tools.ant.taskdefs.condition.Os; | import org.apache.tools.ant.taskdefs.condition.Os; | ||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.apache.tools.ant.util.SymbolicLinkUtils; | |||||
import java.io.File; | import java.io.File; | ||||
@@ -247,7 +248,7 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
File dir = new File(System.getProperty("root"), "src/main/org/apache/tools"); | File dir = new File(System.getProperty("root"), "src/main/org/apache/tools"); | ||||
System.err.println("link exists after exec? " + linkFile.exists()); | System.err.println("link exists after exec? " + linkFile.exists()); | ||||
System.err.println("Ant knows it is a link? " + FileUtils.getFileUtils().isSymbolicLink(dir, "ThisIsALink")); | |||||
System.err.println("Ant knows it is a link? " + SymbolicLinkUtils.getSymbolicLinkUtils().isSymbolicLink(dir, "ThisIsALink")); | |||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
@@ -33,7 +33,7 @@ import org.apache.tools.ant.taskdefs.condition.Os; | |||||
import org.apache.tools.ant.BuildFileTest; | import org.apache.tools.ant.BuildFileTest; | ||||
import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.util.SymbolicLinkUtils; | |||||
/** | /** | ||||
* Test cases for the Symlink task. Link creation, link deletion, recording | * Test cases for the Symlink task. Link creation, link deletion, recording | ||||
@@ -182,53 +182,53 @@ public class SymlinkTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
public void testFileUtilsMethods() throws Exception { | |||||
public void testSymbolicLinkUtilsMethods() throws Exception { | |||||
if (supportsSymlinks) { | if (supportsSymlinks) { | ||||
executeTarget("test-fileutils"); | executeTarget("test-fileutils"); | ||||
FileUtils fu = FileUtils.getFileUtils(); | |||||
SymbolicLinkUtils su = SymbolicLinkUtils.getSymbolicLinkUtils(); | |||||
java.io.File f = getProject().resolveFile("test-working/file1"); | java.io.File f = getProject().resolveFile("test-working/file1"); | ||||
assertTrue(f.exists()); | assertTrue(f.exists()); | ||||
assertFalse(f.isDirectory()); | assertFalse(f.isDirectory()); | ||||
assertTrue(f.isFile()); | assertTrue(f.isFile()); | ||||
assertFalse(fu.isSymbolicLink(null, f.getAbsolutePath())); | |||||
assertFalse(fu.isSymbolicLink(f.getParentFile(), | |||||
assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||||
assertFalse(su.isSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
assertFalse(fu.isDanglingSymbolicLink(null, f.getAbsolutePath())); | |||||
assertFalse(fu.isDanglingSymbolicLink(f.getParentFile(), | |||||
assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||||
assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
f = getProject().resolveFile("test-working/dir1"); | f = getProject().resolveFile("test-working/dir1"); | ||||
assertTrue(f.exists()); | assertTrue(f.exists()); | ||||
assertTrue(f.isDirectory()); | assertTrue(f.isDirectory()); | ||||
assertFalse(f.isFile()); | assertFalse(f.isFile()); | ||||
assertFalse(fu.isSymbolicLink(null, f.getAbsolutePath())); | |||||
assertFalse(fu.isSymbolicLink(f.getParentFile(), | |||||
assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||||
assertFalse(su.isSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
assertFalse(fu.isDanglingSymbolicLink(null, f.getAbsolutePath())); | |||||
assertFalse(fu.isDanglingSymbolicLink(f.getParentFile(), | |||||
assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||||
assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
f = getProject().resolveFile("test-working/file2"); | f = getProject().resolveFile("test-working/file2"); | ||||
assertFalse(f.exists()); | assertFalse(f.exists()); | ||||
assertFalse(f.isDirectory()); | assertFalse(f.isDirectory()); | ||||
assertFalse(f.isFile()); | assertFalse(f.isFile()); | ||||
assertFalse(fu.isSymbolicLink(null, f.getAbsolutePath())); | |||||
assertFalse(fu.isSymbolicLink(f.getParentFile(), | |||||
assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||||
assertFalse(su.isSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
assertFalse(fu.isDanglingSymbolicLink(null, f.getAbsolutePath())); | |||||
assertFalse(fu.isDanglingSymbolicLink(f.getParentFile(), | |||||
assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||||
assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
f = getProject().resolveFile("test-working/dir2"); | f = getProject().resolveFile("test-working/dir2"); | ||||
assertFalse(f.exists()); | assertFalse(f.exists()); | ||||
assertFalse(f.isDirectory()); | assertFalse(f.isDirectory()); | ||||
assertFalse(f.isFile()); | assertFalse(f.isFile()); | ||||
assertFalse(fu.isSymbolicLink(null, f.getAbsolutePath())); | |||||
assertFalse(fu.isSymbolicLink(f.getParentFile(), | |||||
assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||||
assertFalse(su.isSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
assertFalse(fu.isDanglingSymbolicLink(null, f.getAbsolutePath())); | |||||
assertFalse(fu.isDanglingSymbolicLink(f.getParentFile(), | |||||
assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||||
assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
@@ -236,44 +236,44 @@ public class SymlinkTest extends BuildFileTest { | |||||
assertTrue(f.exists()); | assertTrue(f.exists()); | ||||
assertFalse(f.isDirectory()); | assertFalse(f.isDirectory()); | ||||
assertTrue(f.isFile()); | assertTrue(f.isFile()); | ||||
assertTrue(fu.isSymbolicLink(null, f.getAbsolutePath())); | |||||
assertTrue(fu.isSymbolicLink(f.getParentFile(), | |||||
assertTrue(su.isSymbolicLink(f.getAbsolutePath())); | |||||
assertTrue(su.isSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
assertFalse(fu.isDanglingSymbolicLink(null, f.getAbsolutePath())); | |||||
assertFalse(fu.isDanglingSymbolicLink(f.getParentFile(), | |||||
assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||||
assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
f = getProject().resolveFile("test-working/dir.there"); | f = getProject().resolveFile("test-working/dir.there"); | ||||
assertTrue(f.exists()); | assertTrue(f.exists()); | ||||
assertTrue(f.isDirectory()); | assertTrue(f.isDirectory()); | ||||
assertFalse(f.isFile()); | assertFalse(f.isFile()); | ||||
assertTrue(fu.isSymbolicLink(null, f.getAbsolutePath())); | |||||
assertTrue(fu.isSymbolicLink(f.getParentFile(), | |||||
assertTrue(su.isSymbolicLink(f.getAbsolutePath())); | |||||
assertTrue(su.isSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
assertFalse(fu.isDanglingSymbolicLink(null, f.getAbsolutePath())); | |||||
assertFalse(fu.isDanglingSymbolicLink(f.getParentFile(), | |||||
assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||||
assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
f = getProject().resolveFile("test-working/file.notthere"); | f = getProject().resolveFile("test-working/file.notthere"); | ||||
assertFalse(f.exists()); | assertFalse(f.exists()); | ||||
assertFalse(f.isDirectory()); | assertFalse(f.isDirectory()); | ||||
assertFalse(f.isFile()); | assertFalse(f.isFile()); | ||||
assertFalse(fu.isSymbolicLink(null, f.getAbsolutePath())); | |||||
assertFalse(fu.isSymbolicLink(f.getParentFile(), | |||||
assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||||
assertFalse(su.isSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
assertTrue(fu.isDanglingSymbolicLink(null, f.getAbsolutePath())); | |||||
assertTrue(fu.isDanglingSymbolicLink(f.getParentFile(), | |||||
assertTrue(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||||
assertTrue(su.isDanglingSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
f = getProject().resolveFile("test-working/dir.notthere"); | f = getProject().resolveFile("test-working/dir.notthere"); | ||||
assertFalse(f.exists()); | assertFalse(f.exists()); | ||||
assertFalse(f.isDirectory()); | assertFalse(f.isDirectory()); | ||||
assertFalse(f.isFile()); | assertFalse(f.isFile()); | ||||
assertFalse(fu.isSymbolicLink(null, f.getAbsolutePath())); | |||||
assertFalse(fu.isSymbolicLink(f.getParentFile(), | |||||
assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||||
assertFalse(su.isSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
assertTrue(fu.isDanglingSymbolicLink(null, f.getAbsolutePath())); | |||||
assertTrue(fu.isDanglingSymbolicLink(f.getParentFile(), | |||||
assertTrue(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||||
assertTrue(su.isDanglingSymbolicLink(f.getParentFile(), | |||||
f.getName())); | f.getName())); | ||||
} | } | ||||