Author: brett
Date: Sun Apr 30 21:30:54 2006
New Revision: 398521

URL: http://svn.apache.org/viewcvs?rev=398521&view=rev
Log:
[SUREFIRE-38] fix NPE in reporters if a test errors before it starts

Modified:
    
maven/surefire/branches/surefire-testng/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterManager.java
    
maven/surefire/branches/surefire-testng/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java

Modified: 
maven/surefire/branches/surefire-testng/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterManager.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/branches/surefire-testng/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterManager.java?rev=398521&r1=398520&r2=398521&view=diff
==============================================================================
--- 
maven/surefire/branches/surefire-testng/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterManager.java
 (original)
+++ 
maven/surefire/branches/surefire-testng/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterManager.java
 Sun Apr 30 21:30:54 2006
@@ -17,6 +17,7 @@
  */
 
 import org.apache.maven.surefire.util.TeeStream;
+import org.codehaus.plexus.util.IOUtil;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
@@ -282,9 +283,10 @@
 
     private void testFailed( ReportEntry reportEntry, String typeError )
     {
-        String stdOutLog = stdOut.toString();
+        // Note that the fields can be null if the test hasn't even started 
yet (an early error)
+        String stdOutLog = stdOut != null ? stdOut.toString() : "";
 
-        String stdErrLog = stdErr.toString();
+        String stdErrLog = stdErr != null ? stdErr.toString() : "";
 
         resetStreams();
 
@@ -305,11 +307,18 @@
 
     private void resetStreams()
     {
-        System.setOut( oldOut );
-        System.setErr( oldErr );
+        // Note that the fields can be null if the test hasn't even started 
yet (an early error)
+        if ( oldOut != null )
+        {
+            System.setOut( oldOut );
+        }
+        if ( oldErr != null )
+        {
+            System.setErr( oldErr );
+        }
 
-        newOut.close();
-        newErr.close();
+        IOUtil.close( newOut );
+        IOUtil.close( newErr );
     }
 
     public void reset()

Modified: 
maven/surefire/branches/surefire-testng/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/branches/surefire-testng/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java?rev=398521&r1=398520&r2=398521&view=diff
==============================================================================
--- 
maven/surefire/branches/surefire-testng/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java
 (original)
+++ 
maven/surefire/branches/surefire-testng/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java
 Sun Apr 30 21:30:54 2006
@@ -183,6 +183,12 @@
 
     private void writeTestProblems( ReportEntry report, String stdOut, String 
stdErr, String name )
     {
+        if ( testCase == null )
+        {
+            // This can occur if the error happens before the test starts
+            testStarting( report );
+        }
+
         Xpp3Dom element = createElement( testCase, name );
 
         String stackTrace = getStackTrace( report );


Reply via email to