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); + } }