Author: krosenvold
Date: Fri May 20 16:54:13 2011
New Revision: 1125462

URL: http://svn.apache.org/viewvc?rev=1125462&view=rev
Log:
[SUREFIRE-742] Improved error checking/logging and hardened validation somewhat

Modified:
    
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java

Modified: 
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java
URL: 
http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java?rev=1125462&r1=1125461&r2=1125462&view=diff
==============================================================================
--- 
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java
 (original)
+++ 
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java
 Fri May 20 16:54:13 2011
@@ -91,28 +91,28 @@ public class ForkClient
             switch ( operationId )
             {
                 case ForkingRunListener.BOOTERCODE_TESTSET_STARTING:
-                    reporter.testSetStarting( createReportEntry( new 
StringTokenizer( remaining, "," ) ) );
+                    reporter.testSetStarting( createReportEntry( remaining ) );
                     break;
                 case ForkingRunListener.BOOTERCODE_TESTSET_COMPLETED:
-                    reporter.testSetCompleted( createReportEntry( new 
StringTokenizer( remaining, "," ) ) );
+                    reporter.testSetCompleted( createReportEntry( remaining ) 
);
                     break;
                 case ForkingRunListener.BOOTERCODE_TEST_STARTING:
-                    reporter.testStarting( createReportEntry( new 
StringTokenizer( remaining, "," ) ) );
+                    reporter.testStarting( createReportEntry( remaining) );
                     break;
                 case ForkingRunListener.BOOTERCODE_TEST_SUCCEEDED:
-                    reporter.testSucceeded( createReportEntry( new 
StringTokenizer( remaining, "," ) ) );
+                    reporter.testSucceeded( createReportEntry( remaining ) );
                     break;
                 case ForkingRunListener.BOOTERCODE_TEST_FAILED:
-                    reporter.testFailed( createReportEntry( new 
StringTokenizer( remaining, "," ) ) );
+                    reporter.testFailed( createReportEntry( remaining ) );
                     break;
                 case ForkingRunListener.BOOTERCODE_TEST_SKIPPED:
-                    reporter.testSkipped( createReportEntry( new 
StringTokenizer( remaining, "," ) ) );
+                    reporter.testSkipped( createReportEntry( remaining ) );
                     break;
                 case ForkingRunListener.BOOTERCODE_TEST_ERROR:
-                    reporter.testError( createReportEntry( new 
StringTokenizer( remaining, "," ) ) );
+                    reporter.testError( createReportEntry( remaining ) );
                     break;
                 case ForkingRunListener.BOOTERCODE_TEST_ASSUMPTIONFAILURE:
-                    reporter.testAssumptionFailure( createReportEntry( new 
StringTokenizer( remaining, "," ) ) );
+                    reporter.testAssumptionFailure( createReportEntry( 
remaining ) );
                     break;
                 case ForkingRunListener.BOOTERCODE_SYSPROPS:
                     int keyEnd = remaining.indexOf( "," );
@@ -169,8 +169,9 @@ public class ForkClient
         return unescape( remaining );
     }
 
-    private ReportEntry createReportEntry( StringTokenizer tokens )
+    private ReportEntry createReportEntry( String untokenized)
     {
+        StringTokenizer tokens = new StringTokenizer(untokenized, ",");
         try
         {
             String source = tokens.nextToken();
@@ -187,7 +188,7 @@ public class ForkClient
         }
         catch ( RuntimeException e )
         {
-            throw new RuntimeException( tokens.toString(), e );
+            throw new RuntimeException( untokenized, e );
         }
     }
 
@@ -195,7 +196,7 @@ public class ForkClient
     {
         StackTraceWriter stackTraceWriter;
         String stackTraceMessage = nullableCsv( tokens.nextToken() );
-        String stackTrace = nullableCsv( tokens.nextToken() );
+        String stackTrace = tokens.hasMoreTokens() ? nullableCsv( 
tokens.nextToken() ) : null;
         stackTraceWriter =
             stackTrace != null ? new DeserializedStacktraceWriter( 
stackTraceMessage, stackTrace ) : null;
         return stackTraceWriter;

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java
URL: 
http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java?rev=1125462&r1=1125461&r2=1125462&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java
 Fri May 20 16:54:13 2011
@@ -221,8 +221,11 @@ public class ForkingRunListener
             StringUtils.escapeJavaStyleString( byteBuffer.getData(), 
byteBuffer.getlength(), buf, 0, buf.length );
         byteBuffer.advance( i );
         byteBuffer.append( '\n' );
-        target.write( byteBuffer.getData(), 0, byteBuffer.getlength() );
-        target.flush();
+        synchronized ( target )
+        {
+            target.write( byteBuffer.getData(), 0, byteBuffer.getlength() );
+            target.flush();
+        }
     }
 
     private String toPropertyString( String key, String value )
@@ -320,7 +323,6 @@ public class ForkingRunListener
         else
         {
             comma( stringBuffer );
-            comma( stringBuffer );
         }
     }
 }


Reply via email to