From 1cac66df9a735932bd7d81f6854f9e76b683175e Mon Sep 17 00:00:00 2001 From: Peter Reilly Date: Wed, 28 Apr 2004 09:01:08 +0000 Subject: [PATCH] File paths to imported build files should not be canonicalized PR: 28505 Obtained from: Jesse Glick git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@276422 13f79535-47bb-0310-9956-ffa450edef68 --- .../taskdefs/import/symlinks/d1/p1.xml | 4 +++ .../taskdefs/import/symlinks/d2/p2.xml | 1 + .../taskdefs/import/symlinks/d3a/p3.xml | 1 + .../apache/tools/ant/taskdefs/ImportTask.java | 9 ----- .../apache/tools/ant/taskdefs/ImportTest.java | 34 ++++++++++++++++++- 5 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 src/etc/testcases/taskdefs/import/symlinks/d1/p1.xml create mode 100644 src/etc/testcases/taskdefs/import/symlinks/d2/p2.xml create mode 100644 src/etc/testcases/taskdefs/import/symlinks/d3a/p3.xml diff --git a/src/etc/testcases/taskdefs/import/symlinks/d1/p1.xml b/src/etc/testcases/taskdefs/import/symlinks/d1/p1.xml new file mode 100644 index 000000000..c6378a8d5 --- /dev/null +++ b/src/etc/testcases/taskdefs/import/symlinks/d1/p1.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/etc/testcases/taskdefs/import/symlinks/d2/p2.xml b/src/etc/testcases/taskdefs/import/symlinks/d2/p2.xml new file mode 100644 index 000000000..b434ee832 --- /dev/null +++ b/src/etc/testcases/taskdefs/import/symlinks/d2/p2.xml @@ -0,0 +1 @@ + diff --git a/src/etc/testcases/taskdefs/import/symlinks/d3a/p3.xml b/src/etc/testcases/taskdefs/import/symlinks/d3a/p3.xml new file mode 100644 index 000000000..3080451b4 --- /dev/null +++ b/src/etc/testcases/taskdefs/import/symlinks/d3a/p3.xml @@ -0,0 +1 @@ + diff --git a/src/main/org/apache/tools/ant/taskdefs/ImportTask.java b/src/main/org/apache/tools/ant/taskdefs/ImportTask.java index 4ef227785..99b9e65e9 100644 --- a/src/main/org/apache/tools/ant/taskdefs/ImportTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/ImportTask.java @@ -131,8 +131,6 @@ public class ImportTask extends Task { } } - importedFile = new File(getPath(importedFile)); - if (importStack.contains(importedFile)) { getProject().log( "Skipped already imported file:\n " @@ -148,11 +146,4 @@ public class ImportTask extends Task { } } - private static String getPath(File file) { - try { - return file.getCanonicalPath(); - } catch (IOException e) { - return file.getAbsolutePath(); - } - } } diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java index 128f2cd54..946aa539c 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java @@ -17,6 +17,9 @@ package org.apache.tools.ant.taskdefs; +import java.io.File; +import java.io.IOException; + import org.apache.tools.ant.BuildException; import org.apache.tools.ant.BuildFileTest; import org.apache.tools.ant.Location; @@ -109,5 +112,34 @@ public class ImportTest extends BuildFileTest { "Did not see build exception", false); } -} + public void testSymlinkedImports() throws Exception { + String ln = "/usr/bin/ln"; + if (!new File(ln).exists()) { + ln = "/bin/ln"; + } + if (!new File(ln).exists()) { + // Running on Windows or something, so skip it. + return; + } + String symlink = "src/etc/testcases/taskdefs/import/symlinks/d3b"; + if (Runtime.getRuntime().exec(new String[] {ln, "-s", "d3a", symlink}).waitFor() != 0) { + throw new IOException("'" + ln + " -s d3a " + symlink + "' failed"); + } + try { + configureProject( + "src/etc/testcases/taskdefs/import/symlinks/d1/p1.xml"); + assertPropertyEquals( + "ant.file.p2", + new File("src/etc/testcases/taskdefs/import/symlinks/d2/p2.xml") + .getAbsolutePath()); + assertPropertyEquals( + "ant.file.p3", + new File("src/etc/testcases/taskdefs/import/symlinks/d3b/p3.xml") + .getAbsolutePath()); + } finally { + new File(symlink).delete(); + } + } + +}