Author: peterreilly
Date: Wed Oct 11 16:13:08 2006
New Revision: 463045

URL: http://svn.apache.org/viewvc?view=rev&rev=463045
Log:
Added outputtoformatters attribute to <junit> to allow suppression
  of noisey tests. Bugzilla report 12817.

Modified:
    ant/core/trunk/CONTRIBUTORS
    ant/core/trunk/WHATSNEW
    ant/core/trunk/contributors.xml
    ant/core/trunk/docs/manual/OptionalTasks/junit.html
    
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/Constants.java
    
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
    
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java

Modified: ant/core/trunk/CONTRIBUTORS
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/CONTRIBUTORS?view=diff&rev=463045&r1=463044&r2=463045
==============================================================================
Binary files - no diff available.

Modified: ant/core/trunk/WHATSNEW
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?view=diff&rev=463045&r1=463044&r2=463045
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Wed Oct 11 16:13:08 2006
@@ -74,6 +74,9 @@
 * Added <compare> resource selector to select resources based on the
   results of their comparison to other resources.
 
+* Added outputtoformatters attribute to <junit> to allow suppression
+  of noisey tests. Bugzilla report 12817.
+
 Changes from Ant 1.7.0Beta1 to Ant 1.7.0Beta2
 =============================================
 

Modified: ant/core/trunk/contributors.xml
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/contributors.xml?view=diff&rev=463045&r1=463044&r2=463045
==============================================================================
--- ant/core/trunk/contributors.xml (original)
+++ ant/core/trunk/contributors.xml Wed Oct 11 16:13:08 2006
@@ -648,6 +648,10 @@
   </name>
   <name>
     <first>Matt</first>
+    <last>Grosso</last>
+  </name>
+  <name>
+    <first>Matt</first>
     <last>Humphrey</last>
   </name>
   <name>
@@ -968,6 +972,10 @@
   <name>
     <first>Thomas</first>
     <last>Haas</last>
+  </name>
+  <name>
+    <first>Tim</first>
+    <last>Drury</last>
   </name>
   <name>
     <first>Tim</first>

Modified: ant/core/trunk/docs/manual/OptionalTasks/junit.html
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/OptionalTasks/junit.html?view=diff&rev=463045&r1=463044&r2=463045
==============================================================================
--- ant/core/trunk/docs/manual/OptionalTasks/junit.html (original)
+++ ant/core/trunk/docs/manual/OptionalTasks/junit.html Wed Oct 11 16:13:08 2006
@@ -191,6 +191,15 @@
     <td align="center" valign="top">No</td>
   </tr>
   <tr>
+    <td valign="top">outputtoformatters</td>
+    <td valign="top">
+      <em>Since Ant 1.7.0.</em><br/>
+      Send any output generated by tests to the test formatters.
+      This is "true" by default.
+    </td>
+    <td align="center" valign="top">No</td>
+  </tr>
+  <tr>
     <td valign="top">tempdir</td>
     <td valign="top">Where Ant should place temporary files.
       <em>Since Ant 1.6</em>.</td>

Modified: 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/Constants.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/Constants.java?view=diff&rev=463045&r1=463044&r2=463045
==============================================================================
--- 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/Constants.java
 (original)
+++ 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/Constants.java
 Wed Oct 11 16:13:08 2006
@@ -30,6 +30,7 @@
     static final String BEFORE_FIRST_TEST = "BeforeFirstTest";
     static final String PROPSFILE = "propsfile=";
     static final String SHOWOUTPUT = "showoutput=";
+    static final String OUTPUT_TO_FORMATTERS = "outputtoformatters=";
     static final String FORMATTER = "formatter=";
     static final String LOGTESTLISTENEREVENTS = "logtestlistenerevents=";
     static final String TESTSFILE = "testsfile=";

Modified: 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java?view=diff&rev=463045&r1=463044&r2=463045
==============================================================================
--- 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
 (original)
+++ 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
 Wed Oct 11 16:13:08 2006
@@ -145,7 +145,12 @@
     private boolean includeAntRuntime = true;
     private Path antRuntimeClasses = null;
 
+    // Do we send output to System.out/.err in addition to the formatters?
     private boolean showOutput = false;
+
+    // Do we send output to the formatters ?
+    private boolean outputToFormatters = true;
+
     private File tmpDir;
     private AntClassLoader classLoader = null;
     private Permissions perm = null;
@@ -550,6 +555,17 @@
     }
 
     /**
+     * If true, send any output generated by tests to the formatters.
+     *
+     * @param outputToFormatters if true, send output to formatters (Default
+     *                           is true).
+     * @since Ant 1.7.0
+     */
+    public void setOutputToFormatters(boolean outputToFormatters) {
+        this.outputToFormatters = outputToFormatters;
+    }
+
+    /**
      * Assertions to enable in this program (if fork=true)
      * @since Ant 1.6
      * @param asserts assertion set
@@ -923,6 +939,9 @@
 
         cmd.createArgument().setValue(Constants.SHOWOUTPUT
                                       + String.valueOf(showOutput));
+        cmd.createArgument().setValue(Constants.OUTPUT_TO_FORMATTERS
+                                      + String.valueOf(outputToFormatters));
+        
         cmd.createArgument().setValue(Constants.LOGTESTLISTENEREVENTS+"true"); 
// #31885
 
         StringBuffer formatterArg = new StringBuffer(STRING_BUFFER_SIZE);
@@ -964,10 +983,12 @@
                                      + "file.", e, getLocation());
         }
 
-        Execute execute = new Execute(new JUnitLogStreamHandler(this,
-                                                                
Project.MSG_INFO,
-                                                                
Project.MSG_WARN),
-                                      watchdog);
+        Execute execute = new Execute(
+            new JUnitLogStreamHandler(
+                this,
+                Project.MSG_INFO,
+                Project.MSG_WARN),
+            watchdog);
         execute.setCommandline(cmd.getCommandline());
         execute.setAntRun(getProject());
         if (dir != null) {
@@ -1051,7 +1072,9 @@
         if (output.startsWith(TESTLISTENER_PREFIX)) {
             log(output, Project.MSG_VERBOSE);
         } else if (runner != null) {
-            runner.handleOutput(output);
+            if (outputToFormatters) {
+                runner.handleOutput(output);
+            }
             if (showOutput) {
                 super.handleOutput(output);
             }

Modified: 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java?view=diff&rev=463045&r1=463044&r2=463045
==============================================================================
--- 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
 (original)
+++ 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
 Wed Oct 11 16:13:08 2006
@@ -87,6 +87,8 @@
      */
     private boolean showOutput = false;
 
+    private boolean outputToFormatters = true;
+
     /**
      * The permissions set for the test to run.
      */
@@ -244,23 +246,40 @@
         PrintStream savedErr = null;
 
         if (forked) {
-            savedOut = System.out;
-            savedErr = System.err;
-            if (!showOutput) {
-                System.setOut(systemOut);
-                System.setErr(systemError);
+            if (!outputToFormatters) {
+                if (!showOutput) {
+                    savedOut = System.out;
+                    savedErr = System.err;
+                    System.setOut(
+                        new PrintStream(
+                            new OutputStream() {
+                                public void write(int b) {}
+                            }));
+                    System.setErr(
+                        new PrintStream(
+                            new OutputStream() {
+                                public void write(int b) {}
+                            }));
+                }
             } else {
-                System.setOut(new PrintStream(
-                                       new TeeOutputStream(savedOut, systemOut)
-                                       )
-                              );
-                System.setErr(new PrintStream(
-                                       new TeeOutputStream(savedErr,
-                                                           systemError)
-                                       )
-                              );
+                savedOut = System.out;
+                savedErr = System.err;
+                if (!showOutput) {
+                    System.setOut(systemOut);
+                    System.setErr(systemError);
+                } else {
+                    System.setOut(new PrintStream(
+                                      new TeeOutputStream(savedOut, systemOut)
+                                      )
+                                  );
+                    System.setErr(new PrintStream(
+                                      new TeeOutputStream(savedErr,
+                                                          systemError)
+                                      )
+                                  );
+                }
+                perm = null;
             }
-            perm = null;
         } else {
             if (perm != null) {
                 perm.setSecurityManager();
@@ -428,7 +447,7 @@
     }
 
     private void logTestListenerEvent(String msg) {
-        PrintStream out = forked ? savedOut : System.out;
+        PrintStream out = savedOut != null ? savedOut : System.out;
         if (logTestListenerEvents) {
             out.flush();
             out.println(JUnitTask.TESTLISTENER_PREFIX + msg);
@@ -581,6 +600,7 @@
         boolean stackfilter = true;
         Properties props = new Properties();
         boolean showOut = false;
+        boolean outputToFormat = true;
         boolean logTestListenerEvents = false;
 
 
@@ -620,6 +640,9 @@
                 showOut = 
Project.toBoolean(args[i].substring(Constants.SHOWOUTPUT.length()));
             } else if (args[i].startsWith(Constants.LOGTESTLISTENEREVENTS)) {
                 logTestListenerEvents = 
Project.toBoolean(args[i].substring(Constants.LOGTESTLISTENEREVENTS.length()));
+            } else if (args[i].startsWith(Constants.OUTPUT_TO_FORMATTERS)) {
+                outputToFormat = Project.toBoolean(
+                    
args[i].substring(Constants.OUTPUT_TO_FORMATTERS.length()));
             }
         }
 
@@ -647,7 +670,8 @@
                     t.setTodir(new File(st.nextToken()));
                     t.setOutfile(st.nextToken());
                     code = launch(t, haltError, stackfilter, haltFail,
-                                  showOut, logTestListenerEvents, props);
+                                  showOut, outputToFormat,
+                                  logTestListenerEvents, props);
                     errorOccurred = (code == ERRORS);
                     failureOccurred = (code != SUCCESS);
                     if (errorOccurred || failureOccurred) {
@@ -669,7 +693,8 @@
             }
         } else {
             returnCode = launch(new JUnitTest(args[0]), haltError,
-                                stackfilter, haltFail, showOut,
+                                stackfilter, haltFail,
+                                showOut, outputToFormat,
                                 logTestListenerEvents, props);
         }
 
@@ -798,13 +823,15 @@
      */
     private static int launch(JUnitTest t, boolean haltError,
                               boolean stackfilter, boolean haltFail,
-                              boolean showOut, boolean logTestListenerEvents,
+                              boolean showOut, boolean outputToFormat,
+                              boolean logTestListenerEvents,
                               Properties props) {
         t.setProperties(props);
         JUnitTestRunner runner =
             new JUnitTestRunner(t, haltError, stackfilter, haltFail, showOut,
-                                logTestListenerEvents);
+                                logTestListenerEvents, null);
         runner.forked = true;
+        runner.outputToFormatters = outputToFormat;
         transferFormatters(runner, t);
 
         runner.run();



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to