InvocationTargetExceptions when they happen PR: 5830 To test it I've enabled all tests for <condition>. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271429 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -1,7 +1,7 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2000-2001 The Apache Software Foundation. All rights | |||
| * Copyright (c) 2000-2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| @@ -131,6 +131,14 @@ public class TaskAdapter extends Task { | |||
| } | |||
| executeM.invoke(proxy, null); | |||
| return; | |||
| } catch (java.lang.reflect.InvocationTargetException ie) { | |||
| log("Error in " + proxy.getClass(), Project.MSG_ERR); | |||
| Throwable t = ie.getTargetException(); | |||
| if (t instanceof BuildException) { | |||
| throw ((BuildException) t); | |||
| } else { | |||
| throw new BuildException(t); | |||
| } | |||
| } catch( Exception ex ) { | |||
| log("Error in " + proxy.getClass(), Project.MSG_ERR); | |||
| throw new BuildException( ex ); | |||
| @@ -1,7 +1,7 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2001 The Apache Software Foundation. All rights | |||
| * Copyright (c) 2001-2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| @@ -73,7 +73,7 @@ import org.apache.tools.ant.taskdefs.condition.ConditionBase; | |||
| */ | |||
| public class ConditionTask extends ConditionBase { | |||
| private String property; | |||
| private String property = null; | |||
| private String value = "true"; | |||
| /** | |||
| @@ -102,6 +102,10 @@ public class ConditionTask extends ConditionBase { | |||
| if (countConditions() < 1) { | |||
| throw new BuildException("You must nest a condition into <condition>"); | |||
| } | |||
| if (property == null) { | |||
| throw new BuildException("The property attribute is required."); | |||
| } | |||
| Condition c = (Condition) getConditions().nextElement(); | |||
| if (c.eval()) { | |||
| getProject().setNewProperty(property, value); | |||
| @@ -110,7 +110,7 @@ public class FilesMatch implements Condition { | |||
| //validate | |||
| if (file1 == null || file2 == null) { | |||
| throw new BuildException("both file1 and file2 are required in fileequals"); | |||
| throw new BuildException("both file1 and file2 are required in filesmatch"); | |||
| } | |||
| //#now match the files | |||
| @@ -93,24 +93,16 @@ public class ConditionTest extends BuildFileTest { | |||
| expectPropertySet("basic","basic"); | |||
| } | |||
| /** | |||
| * @todo have this reject the current error | |||
| */ | |||
| public void testConditionIncomplete() { | |||
| try { | |||
| executeTarget("condition-incomplete"); | |||
| } catch(Exception e) { | |||
| } | |||
| expectSpecificBuildException("condition-incomplete", | |||
| "property attribute has been omitted", | |||
| "The property attribute is required."); | |||
| } | |||
| /** | |||
| * @todo have this reject the current error | |||
| */ | |||
| public void testConditionEmpty() { | |||
| try { | |||
| executeTarget("condition-empty"); | |||
| } catch(Exception e) { | |||
| } | |||
| expectSpecificBuildException("condition-empty", | |||
| "no conditions", | |||
| "You must nest a condition into <condition>"); | |||
| } | |||
| public void testShortcut() { | |||
| @@ -133,14 +125,10 @@ public class ConditionTest extends BuildFileTest { | |||
| expectPropertyUnset("negationfalse","negationfalse"); | |||
| } | |||
| /** | |||
| * @todo have this reject the current error | |||
| */ | |||
| public void testNegationIncomplete() { | |||
| try { | |||
| executeTarget("negationincomplete"); | |||
| } catch(Exception e) { | |||
| } | |||
| expectSpecificBuildException("negationincomplete", | |||
| "no conditions in <not>", | |||
| "You must nest a condition into <not>"); | |||
| } | |||
| public void testAnd() { | |||
| @@ -180,33 +168,20 @@ public class ConditionTest extends BuildFileTest { | |||
| } | |||
| /** | |||
| * @todo have this reject the current error | |||
| */ | |||
| public void testFilesmatchIncomplete() { | |||
| try { | |||
| executeTarget("filesmatch-incomplete"); | |||
| } catch(Exception e) { | |||
| } | |||
| } | |||
| expectSpecificBuildException("filesmatch-incomplete", | |||
| "Missing file2 attribute", | |||
| "both file1 and file2 are required in filesmatch"); | |||
| } | |||
| public void testFilesmatchOddsizes() { | |||
| expectPropertyUnset("filesmatch-oddsizes","filesmatch-oddsizes"); | |||
| } | |||
| /** | |||
| * @todo have this reject the current error | |||
| */ | |||
| public void testFilesmatchExistence() { | |||
| try { | |||
| executeTarget("filesmatch-existence"); | |||
| } catch(Exception e) { | |||
| } | |||
| expectPropertyUnset("filesmatch-existence", "filesmatch-existence"); | |||
| } | |||
| /** | |||
| * @todo have this reject the current error | |||
| */ | |||
| public void testFilesmatchDifferent() { | |||
| expectPropertyUnset("filesmatch-different","filesmatch-different"); | |||
| } | |||