peterreilly 2005/04/21 02:49:55
Modified: . WHATSNEW
docs/manual/CoreTasks macrodef.html
src/etc/testcases/taskdefs macrodef.xml
src/main/org/apache/tools/ant/taskdefs MacroDef.java
MacroInstance.java
src/testcases/org/apache/tools/ant/taskdefs
MacroDefTest.java
Log:
add backtrace attribute to <macrodef>
PR: 27219
Revision Changes Path
1.810 +2 -0 ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/ant/WHATSNEW,v
retrieving revision 1.809
retrieving revision 1.810
diff -u -r1.809 -r1.810
--- WHATSNEW 19 Apr 2005 22:30:38 -0000 1.809
+++ WHATSNEW 21 Apr 2005 09:49:55 -0000 1.810
@@ -181,6 +181,8 @@
* <exec> (and hence, <apply>) have an OsFamily attribute, which can restrict
execution to a single OS family.
+* added "backtrace" attribute to macrodef. Bugzilla report 27219.
+
Changes from Ant 1.6.2 to current Ant 1.6 CVS version
=====================================================
1.25 +11 -0 ant/docs/manual/CoreTasks/macrodef.html
Index: macrodef.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/CoreTasks/macrodef.html,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- macrodef.html 23 Mar 2005 18:48:59 -0000 1.24
+++ macrodef.html 21 Apr 2005 09:49:55 -0000 1.25
@@ -50,6 +50,17 @@
</td>
<td valign="top" align="center">No</td>
</tr>
+ <tr>
+ <td valign="top">backtrace</td>
+ <td valign="top">
+ This controls the error traceback if they is an
+ error detected when running the macro. If this is
+ set to true, there will be an erro trackback, if false
+ there will not be one. The default value is true.
+ <em>Since ant 1.7</em>.
+ </td>
+ <td valign="top" align="center">No</td>
+ </tr>
</table>
<h3>Parameters specified as nested elements</h3>
<h4>attribute</h4>
1.13 +16 -0 ant/src/etc/testcases/taskdefs/macrodef.xml
Index: macrodef.xml
===================================================================
RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/macrodef.xml,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- macrodef.xml 27 May 2004 14:38:46 -0000 1.12
+++ macrodef.xml 21 Apr 2005 09:49:55 -0000 1.13
@@ -223,4 +223,20 @@
</target>
+ <target name="backtraceoff">
+ <macrodef name="nobacktrace" backtrace="false">
+ <sequential>
+ <fail>This is a failure</fail>
+ </sequential>
+ </macrodef>
+ <nobacktrace/>
+ </target>
+ <target name="backtraceon">
+ <macrodef name="nobacktrace" backtrace="true">
+ <sequential>
+ <fail>This is a failure</fail>
+ </sequential>
+ </macrodef>
+ <nobacktrace/>
+ </target>
</project>
1.32 +23 -0 ant/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
Index: MacroDef.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/MacroDef.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- MacroDef.java 15 Mar 2005 13:35:28 -0000 1.31
+++ MacroDef.java 21 Apr 2005 09:49:55 -0000 1.32
@@ -42,6 +42,7 @@
public class MacroDef extends AntlibDefinition {
private NestedSequential nestedSequential;
private String name;
+ private boolean backTrace = true;
private List attributes = new ArrayList();
private Map elements = new HashMap();
private String textName = null;
@@ -93,6 +94,28 @@
}
/**
+ * Set the backTrace attribute.
+ *
+ * @param backTrace if true and the macro instance generates has
+ * an error, a backtrace of the location within
+ * the macro and call to the macro will be outout.
+ * if false, only the location of the call to
+ * macro will be shown. Default is true.
+ * @since ant 1.7
+ */
+ public void setBackTrace(boolean backTrace) {
+ this.backTrace = backTrace;
+ }
+
+ /**
+ * @return the backTrace attribute.
+ * @since ant 1.7
+ */
+ public boolean getBackTrace() {
+ return backTrace;
+ }
+
+ /**
* This is the sequential nested element of the macrodef.
*
* @return a sequential element to be configured.
1.34 +6 -2
ant/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
Index: MacroInstance.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- MacroInstance.java 14 Jan 2005 16:49:34 -0000 1.33
+++ MacroInstance.java 21 Apr 2005 09:49:55 -0000 1.34
@@ -380,8 +380,12 @@
try {
c.perform();
} catch (BuildException ex) {
- throw ProjectHelper.addLocationToBuildException(
- ex, getLocation());
+ if (macroDef.getBackTrace()) {
+ throw ProjectHelper.addLocationToBuildException(
+ ex, getLocation());
+ } else {
+ throw new BuildException(ex.getMessage(), ex);
+ }
} finally {
presentElements = null;
localAttributes = null;
1.18 +18 -0
ant/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java
Index: MacroDefTest.java
===================================================================
RCS file:
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- MacroDefTest.java 27 May 2004 14:38:46 -0000 1.17
+++ MacroDefTest.java 21 Apr 2005 09:49:55 -0000 1.18
@@ -18,6 +18,7 @@
package org.apache.tools.ant.taskdefs;
import org.apache.tools.ant.BuildFileTest;
+import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
@@ -128,5 +129,22 @@
"Only one element allowed when using implicit elements",
"Only one element allowed when using implicit elements");
}
+
+ public void testBackTraceOff() {
+ try {
+ executeTarget("backtraceoff");
+ } catch (BuildException ex) {
+ if (ex.getMessage().indexOf("following error occurred") != -1) {
+ fail("error message contained backtrace - " +
ex.getMessage());
+ }
+ }
+ }
+
+ public void testBackTrace() {
+ expectBuildExceptionContaining(
+ "backtraceon",
+ "Checking if a back trace is created",
+ "following error occurred");
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]