From 23bebfbdc21ac3706aaa3d84210c900c867d0f21 Mon Sep 17 00:00:00 2001 From: Peter Reilly Date: Mon, 3 Nov 2003 16:36:19 +0000 Subject: [PATCH] make error message for bad imports a little better When an buildexception is reported in the imported xml, add the importer xml file to the build exception git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@275610 13f79535-47bb-0310-9956-ffa450edef68 --- src/etc/testcases/taskdefs/import/bad.xml | 3 +++ .../taskdefs/import/import_bad_import.xml | 3 +++ .../apache/tools/ant/taskdefs/ImportTask.java | 15 +++++++++++- .../apache/tools/ant/taskdefs/ImportTest.java | 24 +++++++++++++++++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/etc/testcases/taskdefs/import/bad.xml create mode 100644 src/etc/testcases/taskdefs/import/import_bad_import.xml 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); + } }