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 | * 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. | * reserved. | ||||
| * | * | ||||
| * Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
| @@ -131,6 +131,14 @@ public class TaskAdapter extends Task { | |||||
| } | } | ||||
| executeM.invoke(proxy, null); | executeM.invoke(proxy, null); | ||||
| return; | 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 ) { | } catch( Exception ex ) { | ||||
| log("Error in " + proxy.getClass(), Project.MSG_ERR); | log("Error in " + proxy.getClass(), Project.MSG_ERR); | ||||
| throw new BuildException( ex ); | throw new BuildException( ex ); | ||||
| @@ -1,7 +1,7 @@ | |||||
| /* | /* | ||||
| * The Apache Software License, Version 1.1 | * 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. | * reserved. | ||||
| * | * | ||||
| * Redistribution and use in source and binary forms, with or without | * 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 { | public class ConditionTask extends ConditionBase { | ||||
| private String property; | |||||
| private String property = null; | |||||
| private String value = "true"; | private String value = "true"; | ||||
| /** | /** | ||||
| @@ -102,6 +102,10 @@ public class ConditionTask extends ConditionBase { | |||||
| if (countConditions() < 1) { | if (countConditions() < 1) { | ||||
| throw new BuildException("You must nest a condition into <condition>"); | 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(); | Condition c = (Condition) getConditions().nextElement(); | ||||
| if (c.eval()) { | if (c.eval()) { | ||||
| getProject().setNewProperty(property, value); | getProject().setNewProperty(property, value); | ||||
| @@ -110,7 +110,7 @@ public class FilesMatch implements Condition { | |||||
| //validate | //validate | ||||
| if (file1 == null || file2 == null) { | 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 | //#now match the files | ||||
| @@ -93,24 +93,16 @@ public class ConditionTest extends BuildFileTest { | |||||
| expectPropertySet("basic","basic"); | expectPropertySet("basic","basic"); | ||||
| } | } | ||||
| /** | |||||
| * @todo have this reject the current error | |||||
| */ | |||||
| public void testConditionIncomplete() { | 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() { | 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() { | public void testShortcut() { | ||||
| @@ -133,14 +125,10 @@ public class ConditionTest extends BuildFileTest { | |||||
| expectPropertyUnset("negationfalse","negationfalse"); | expectPropertyUnset("negationfalse","negationfalse"); | ||||
| } | } | ||||
| /** | |||||
| * @todo have this reject the current error | |||||
| */ | |||||
| public void testNegationIncomplete() { | 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() { | public void testAnd() { | ||||
| @@ -180,33 +168,20 @@ public class ConditionTest extends BuildFileTest { | |||||
| } | } | ||||
| /** | |||||
| * @todo have this reject the current error | |||||
| */ | |||||
| public void testFilesmatchIncomplete() { | 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() { | public void testFilesmatchOddsizes() { | ||||
| expectPropertyUnset("filesmatch-oddsizes","filesmatch-oddsizes"); | expectPropertyUnset("filesmatch-oddsizes","filesmatch-oddsizes"); | ||||
| } | } | ||||
| /** | |||||
| * @todo have this reject the current error | |||||
| */ | |||||
| public void testFilesmatchExistence() { | 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() { | public void testFilesmatchDifferent() { | ||||
| expectPropertyUnset("filesmatch-different","filesmatch-different"); | expectPropertyUnset("filesmatch-different","filesmatch-different"); | ||||
| } | } | ||||