ehatcher 2003/05/28 06:12:04
Modified: . WHATSNEW
docs/manual/OptionalTasks junit.html
src/main/org/apache/tools/ant/taskdefs/optional/junit
FormatterElement.java JUnitTask.java
Log:
Apply patch from #20270 - adds if/unless clause to junit formatters.
Submitted by Eli Tucker
Revision Changes Path
1.430 +17 -15 ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/ant/WHATSNEW,v
retrieving revision 1.429
retrieving revision 1.430
diff -u -r1.429 -r1.430
--- WHATSNEW 27 May 2003 15:25:47 -0000 1.429
+++ WHATSNEW 28 May 2003 13:12:02 -0000 1.430
@@ -23,8 +23,8 @@
* <xmlproperty> will no longer fail if the file to be loaded doesn't exist.
-* XML namespaces are now enabled in the XML parser, meaning XML namespace
- declarations no longer cause errors.
+* XML namespaces are now enabled in the XML parser, meaning XML namespace
+ declarations no longer cause errors.
* The <ftp> and <telnet> tasks now require Jakarta Commons Net instead
of the older ORO Netcomponents version. See
@@ -82,7 +82,7 @@
* <exec> output and error streams can now be redirected independently
to either a property or a file (or both)
-* TarEntry's File-arg constructor would fail with a
+* TarEntry's File-arg constructor would fail with a
StringIndexOutOfBoundsException on all OSes where os.name is shorter
than seven characters. Bugzilla Report 18105.
@@ -112,7 +112,7 @@
* Perforce tasks relying on output from the server such as <p4change> and
<p4label>
were hanging. Bugzilla Reports 18129 and 18956.
-* build.sh install had a problem on cygwin (with REALANTHOME).
+* build.sh install had a problem on cygwin (with REALANTHOME).
Bugzilla Report 17257
* <replaceregexp> didn't work for multi-byte encodings if byline was false.
@@ -139,19 +139,19 @@
* <different> selector : make ignoreFileTimes effectively default to true
and fix a bug in the comparison of timestamps. Bugzilla Report 20205.
-* <different> selector can now be nested directly under a fileset
+* <different> selector can now be nested directly under a fileset
Bugzilla Report 20220.
Other changes:
--------------
* Six new Clearcase tasks added.
-* A new filter reader namely tokenfilter has been added. Bugzilla
+* A new filter reader namely tokenfilter has been added. Bugzilla
Report 18312.
* A new attribute named skip is added to the TailFilter and
HeadFilter filter readers.
-
+
* Shipped XML parser is now Xerces 2.4.0
* The filesetmanifest attribute of <jar> has been reenabled.
@@ -223,25 +223,25 @@
all compilers.
* a new attribute "globalopts" can be added to all Perforce tasks.
- You can put in it all the strings described by p4 help usage. Refer to
+ You can put in it all the strings described by p4 help usage. Refer to
the docs for more information.
* new Perforce tasks <p4integrate> , <p4resolve>, and <p4labelsync>
-* <p4submit> will change the property p4.change if the Perforce server
+* <p4submit> will change the property p4.change if the Perforce server
renumbers the change list.
- It will set the property p4.needsresolve if the submit fails,
+ It will set the property p4.needsresolve if the submit fails,
and the message says that file(s) need to be resolved.
* <replaceregexp> now has an optional encoding attribute to support
replacing in files that are in a different encoding than the
platform's default.
-
+
* The <exec> task may now have its input redirected from either a file
or a string from the build file. The error output can be separated
to a different file when outut is redirected. standard error may be
logged to the Ant log when redirecting output to a file
-
+
* The <java> task also supports the input redirection and separate
error streams introduced to the <exec> task. In addition, it is now
possible to save the output into a property for use within the build
@@ -302,7 +302,7 @@
* <mail> has a new attribute encoding. Bugzilla Report 15434.
* <mail> has new attributes user and password for SMTP auth.
-maillogger can also use this.
+maillogger can also use this.
The implementation only with JavaMail (encoding="MIME").
Implementation with plain mail remains to do.
Bugzilla Report 5969.
@@ -384,6 +384,8 @@
* <java> and <junit> now support a nested <bootclasspath> element that
will be ignored if not forking a new VM.
+* <junit>'s nested <formatter> elements now support if/unless clauses.
+
Changes from Ant 1.5.2 to Ant 1.5.3
===================================
@@ -426,7 +428,7 @@
Other Changes:
--------------
-* Added ability to specify manifest encoding for the <jar> and
+* Added ability to specify manifest encoding for the <jar> and
<manifest> tasks
Changes from Ant 1.5.1 to Ant 1.5.2
@@ -515,7 +517,7 @@
* Corrected a problem in XMLLogger where it would not associated
messages with a taskdef'd task
-* <uptodate> now works when using attributes (i.e. not filesets) and
pointing
+* <uptodate> now works when using attributes (i.e. not filesets) and pointing
to the same file
* Java task (and output system) now stores output which doos not end
1.27 +10 -0 ant/docs/manual/OptionalTasks/junit.html
Index: junit.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/OptionalTasks/junit.html,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- junit.html 27 May 2003 08:49:41 -0000 1.26
+++ junit.html 28 May 2003 13:12:03 -0000 1.27
@@ -285,6 +285,16 @@
sent to a file.</td>
<td align="center">No; default is <code>true</code>.</td>
</tr>
+ <tr>
+ <td valign="top">if</td>
+ <td valign="top">Only use formatter if the named property is set.</td>
+ <td align="center">No; default is <code>true</code>.</td>
+ </tr>
+ <tr>
+ <td valign="top">unless</td>
+ <td valign="top">Only use formatter if the named property is <b>not</b>
set.</td>
+ <td align="center">No; default is <code>true</code>.</td>
+ </tr>
</table>
<h4>test</h4>
1.13 +40 -0
ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
Index: FormatterElement.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- FormatterElement.java 23 May 2003 14:15:42 -0000 1.12
+++ FormatterElement.java 28 May 2003 13:12:03 -0000 1.13
@@ -59,6 +59,7 @@
import java.io.OutputStream;
import org.apache.tools.ant.AntClassLoader;
import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
import org.apache.tools.ant.types.EnumeratedAttribute;
/**
@@ -76,6 +77,7 @@
* must be set.
*
* @author Stefan Bodewig
+ * @author <a href="http://nerdmonkey.com">Eli Tucker</a>
*
* @see JUnitTask
* @see XMLJUnitResultFormatter
@@ -90,6 +92,8 @@
private OutputStream out = System.out;
private File outFile;
private boolean useFile = true;
+ private String ifProperty;
+ private String unlessProperty;
/**
* <p> Quick way to use a standard formatter.
@@ -171,6 +175,42 @@
*/
boolean getUseFile() {
return useFile;
+ }
+
+ /**
+ * Set whether this formatter should be used. It will be
+ * used if the property has been set, otherwise it won't.
+ * @param ifProperty name of property
+ */
+ public void setIf(String ifProperty)
+ {
+ this.ifProperty = ifProperty;
+ }
+
+ /**
+ * Set whether this formatter should NOT be used. It
+ * will not be used if the property has been set, orthwise it
+ * will be used.
+ * @param unlessProperty name of property
+ */
+ public void setUnless(String unlessProperty)
+ {
+ this.unlessProperty = unlessProperty;
+ }
+
+ /**
+ * Ensures that the selector passes the conditions placed
+ * on it with <code>if</code> and <code>unless</code> properties.
+ */
+ public boolean shouldUse(Task t) {
+ if (ifProperty != null && t.getProject().getProperty(ifProperty) ==
null) {
+ return false;
+ } else if (unlessProperty != null &&
+ t.getProject().getProperty(unlessProperty) != null) {
+ return false;
+ }
+
+ return true;
}
/**
1.67 +20 -15
ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
Index: JUnitTask.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -r1.66 -r1.67
--- JUnitTask.java 27 May 2003 08:49:42 -0000 1.66
+++ JUnitTask.java 28 May 2003 13:12:03 -0000 1.67
@@ -147,6 +147,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Gerrit Riessen</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Erik Hatcher</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Martijn Kruithof></a>
+ * @author <a href="http://nerdmonkey.com">Eli Tucker</a>
*
* @version $Revision$
*
@@ -653,15 +654,17 @@
final FormatterElement[] feArray = mergeFormatters(test);
for (int i = 0; i < feArray.length; i++) {
FormatterElement fe = feArray[i];
- formatterArg.append("formatter=");
- formatterArg.append(fe.getClassname());
- File outFile = getOutput(fe, test);
- if (outFile != null) {
- formatterArg.append(",");
- formatterArg.append(outFile);
+ if(fe.shouldUse(this)) {
+ formatterArg.append("formatter=");
+ formatterArg.append(fe.getClassname());
+ File outFile = getOutput(fe, test);
+ if (outFile != null) {
+ formatterArg.append(",");
+ formatterArg.append(outFile);
+ }
+ cmd.createArgument().setValue(formatterArg.toString());
+ formatterArg = new StringBuffer();
}
- cmd.createArgument().setValue(formatterArg.toString());
- formatterArg = new StringBuffer();
}
// Create a temporary file to pass the Ant properties to the
@@ -868,13 +871,15 @@
final FormatterElement[] feArray = mergeFormatters(test);
for (int i = 0; i < feArray.length; i++) {
FormatterElement fe = feArray[i];
- File outFile = getOutput(fe, test);
- if (outFile != null) {
- fe.setOutfile(outFile);
- } else {
- fe.setOutput(getDefaultOutput());
+ if(fe.shouldUse(this)) {
+ File outFile = getOutput(fe, test);
+ if (outFile != null) {
+ fe.setOutfile(outFile);
+ } else {
+ fe.setOutput(getDefaultOutput());
+ }
+ runner.addFormatter(fe.createFormatter(cl));
}
- runner.addFormatter(fe.createFormatter(cl));
}
runner.run();