Author: bodewig
Date: Tue Dec 31 10:06:27 2013
New Revision: 1554392
URL: http://svn.apache.org/r1554392
Log:
import failed to import file specified as absolute path imported from an
URI/jar - PR 50953
Modified:
ant/core/trunk/WHATSNEW
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ImportTask.java
ant/core/trunk/src/tests/antunit/taskdefs/import-url-test.xml
Modified: ant/core/trunk/WHATSNEW
URL:
http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=1554392&r1=1554391&r2=1554392&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Tue Dec 31 10:06:27 2013
@@ -8,6 +8,10 @@ Changes that could break older environme
Fixed bugs:
-----------
+* <import>/<include> failed when the importing file was loaded from an
+ URI or a jar and it imported a file from the local file system via
+ an absolute path.
+ Bugzilla Report 50953
Other changes:
--------------
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ImportTask.java
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ImportTask.java?rev=1554392&r1=1554391&r2=1554392&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ImportTask.java
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ImportTask.java Tue
Dec 31 10:06:27 2013
@@ -248,6 +248,10 @@ public class ImportTask extends Task {
// *not* the current directory (same as entity includes).
if (file != null) {
+ if (isExistingAbsoluteFile(file)) {
+ return new FileResource(new File(file));
+ }
+
File buildFile =
new File(getLocation().getFileName()).getAbsoluteFile();
if (buildFile.exists()) {
@@ -271,6 +275,11 @@ public class ImportTask extends Task {
return null;
}
+ private boolean isExistingAbsoluteFile(String name) {
+ File f = new File(name);
+ return f.isAbsolute() && f.exists();
+ }
+
/**
* Whether the task is in include (as opposed to import) mode.
*
Modified: ant/core/trunk/src/tests/antunit/taskdefs/import-url-test.xml
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/import-url-test.xml?rev=1554392&r1=1554391&r2=1554392&view=diff
==============================================================================
--- ant/core/trunk/src/tests/antunit/taskdefs/import-url-test.xml (original)
+++ ant/core/trunk/src/tests/antunit/taskdefs/import-url-test.xml Tue Dec 31
10:06:27 2013
@@ -18,6 +18,7 @@
<project default="antunit" xmlns:au="antlib:org.apache.ant.antunit">
<import file="../antunit-base.xml" />
+ <mkdir dir="${output}"/>
<mkdir dir="${input}/a/b"/>
<mkdir dir="${input}/a/c"/>
<echo file="${input}/a/b/outer.xml"><![CDATA[
@@ -40,6 +41,18 @@
<echo file="${input}/a/c/test.properties"><![CDATA[
foo=bar
]]></echo>
+ <echo file="${input}/a/b/external-import.xml"><![CDATA[
+<project name="external-import">
+ <import file="${output}/imported.xml"/>
+</project>
+]]></echo>
+ <echo file="${output}/imported.xml"><![CDATA[
+<project name="imported">
+ <target name="bar">
+ <echo>In imported</echo>
+ </target>
+</project>
+]]></echo>
<jar destfile="${test.jar}">
<fileset dir="${input}"/>
</jar>
@@ -55,6 +68,11 @@ foo=bar
<classpath location="${test.jar}"/>
</javaresource>
</import>
+ <import>
+ <javaresource name="a/b/external-import.xml">
+ <classpath location="${test.jar}"/>
+ </javaresource>
+ </import>
<target name="testImportOfNestedFile" depends="foo">
<au:assertLogContains text="In inner"/>
@@ -62,6 +80,11 @@ foo=bar
<au:assertLogContains text="foo is bar"/>
</target>
+ <target name="testImportOfNestedFileWithAbsolutePath" depends="bar"
+
description="https://issues.apache.org/bugzilla/show_bug.cgi?id=50953">
+ <au:assertLogContains text="In imported"/>
+ </target>
+
<target name="tearDown">
<taskdef name="close"
classname="org.apache.tools.ant.taskdefs.CloseResources"/>
@@ -73,5 +96,6 @@ foo=bar
<delete file="${test.jar}" quiet="true" deleteonexit="true"/>
<!-- Calling antunit-base.tearDown sometimes causes ISEs in <import> in
Ant-Build-Matrix: -->
<delete dir="${input}"/>
+ <delete dir="${output}"/>
</target>
</project>