diff --git a/src/etc/testcases/taskdefs/import/bad.xml b/src/etc/testcases/taskdefs/import/bad.xml
new file mode 100644
index 000000000..fa2931cab
--- /dev/null
+++ b/src/etc/testcases/taskdefs/import/bad.xml
@@ -0,0 +1,3 @@
+
+<<<
+
diff --git a/src/etc/testcases/taskdefs/import/import_bad_import.xml b/src/etc/testcases/taskdefs/import/import_bad_import.xml
new file mode 100644
index 000000000..3bb67825a
--- /dev/null
+++ b/src/etc/testcases/taskdefs/import/import_bad_import.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/main/org/apache/tools/ant/taskdefs/ImportTask.java b/src/main/org/apache/tools/ant/taskdefs/ImportTask.java
index cf5a64dbb..159160b99 100644
--- a/src/main/org/apache/tools/ant/taskdefs/ImportTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/ImportTask.java
@@ -55,6 +55,7 @@
package org.apache.tools.ant.taskdefs;
import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Location;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;
import org.apache.tools.ant.Task;
@@ -179,7 +180,19 @@ public class ImportTask extends Task {
return;
}
- helper.parse(getProject(), importedFile);
+ try {
+ helper.parse(getProject(), importedFile);
+ } catch (BuildException ex) {
+ Location exLocation = ex.getLocation();
+ if (exLocation == null) {
+ throw ex;
+ }
+ throw new BuildException(
+ "Error executing import file"
+ + System.getProperty("line.separator")
+ + exLocation.toString()
+ + " " + ex.getMessage());
+ }
}
private static String getPath(File file) {
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java
index d161e2e67..cfd07f025 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java
@@ -54,7 +54,9 @@
package org.apache.tools.ant.taskdefs;
+import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.BuildFileTest;
+import org.apache.tools.ant.Location;
import org.apache.tools.ant.Project;
/**
@@ -119,5 +121,27 @@ public class ImportTest extends BuildFileTest {
expectPropertySet("within-imported", "foo", "bar");
assertNotNull(getProject().getReference("baz"));
}
+
+ public void testImportError() {
+ try {
+ configureProject(
+ "src/etc/testcases/taskdefs/import/import_bad_import.xml");
+ } catch (BuildException ex) {
+ Location lo = ex.getLocation();
+ assertTrue(
+ "expected location of build exception to be set",
+ (lo != null));
+ assertTrue(
+ "expected location to contain calling file",
+ lo.getFileName().indexOf("import_bad_import.xml") != -1);
+ assertTrue(
+ "expected message of ex to contain called file",
+ ex.getMessage().indexOf("bad.xml") != -1);
+ return;
+ }
+ assertTrue(
+ "Did not see build exception",
+ false);
+ }
}