Repository: maven-surefire
Updated Branches:
  refs/heads/master c89aa69fa -> 6e5fb5695


[SUREFIRE-986] Groovy power assert incorrect indentation


Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/6e5fb569
Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/6e5fb569
Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/6e5fb569

Branch: refs/heads/master
Commit: 6e5fb5695a48ad072cc354e31b8fd82656b9d320
Parents: c89aa69
Author: Tibor17 <tibo...@lycos.com>
Authored: Fri Jul 3 03:53:55 2015 +0200
Committer: Tibor17 <tibo...@lycos.com>
Committed: Fri Jul 3 03:53:55 2015 +0200

----------------------------------------------------------------------
 .../report/LegacyPojoStackTraceWriter.java      | 40 ++++++++++++++++++--
 .../report/LegacyPojoStackTraceWriterTest.java  | 18 +++++++++
 .../surefire/report/PojoStackTraceWriter.java   | 33 +++++++++++++++-
 .../surefire/report/SmartStackTraceParser.java  | 29 +++++++++++++-
 .../report/PojoStackTraceWriterTest.java        | 17 +++++++++
 .../common/junit4/JUnit4StackTraceWriter.java   | 40 +++++++++++++++++++-
 6 files changed, 170 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6e5fb569/surefire-api/src/main/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriter.java
----------------------------------------------------------------------
diff --git 
a/surefire-api/src/main/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriter.java
 
b/surefire-api/src/main/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriter.java
index aaa7f5a..685ea7b 100644
--- 
a/surefire-api/src/main/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriter.java
+++ 
b/surefire-api/src/main/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriter.java
@@ -50,13 +50,26 @@ public class LegacyPojoStackTraceWriter
 
     public String writeTraceToString()
     {
-        StringWriter w = new StringWriter();
         if ( t != null )
         {
-            t.printStackTrace( new PrintWriter( w ) );
+            StringWriter w = new StringWriter();
+            PrintWriter stackTrace = new PrintWriter( w );
+            t.printStackTrace( stackTrace );
+            stackTrace.close();
             w.flush();
+            StringBuffer builder = w.getBuffer();
+            if ( isMultiLineExceptionMessage( t ) )
+            {
+                // SUREFIRE-986
+                String exc = t.getClass().getName() + ": ";
+                if ( builder.toString().startsWith( exc ) )
+                {
+                    builder.insert( exc.length(), '\n' );
+                }
+            }
+            return builder.toString();
         }
-        return w.toString();
+        return "";
     }
 
     public String smartTrimmedStackTrace()
@@ -84,6 +97,27 @@ public class LegacyPojoStackTraceWriter
         return result.toString();
     }
 
+    private static boolean isMultiLineExceptionMessage( Throwable t )
+    {
+        String msg = t.getLocalizedMessage();
+        if ( msg != null )
+        {
+            int countNewLines = 0;
+            for ( int i = 0, length = msg.length(); i < length; i++ )
+            {
+                if ( msg.charAt( i ) == '\n' )
+                {
+                    if ( ++countNewLines == 2 )
+                    {
+                        break;
+                    }
+                }
+            }
+            return countNewLines > 1 || countNewLines == 1 && 
!msg.trim().endsWith( "\n" );
+        }
+        return false;
+    }
+
     private static String getTruncatedMessage( String msg, int i )
     {
         if ( i < 0 )

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6e5fb569/surefire-api/src/test/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriterTest.java
----------------------------------------------------------------------
diff --git 
a/surefire-api/src/test/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriterTest.java
 
b/surefire-api/src/test/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriterTest.java
index ab58186..eb81871 100644
--- 
a/surefire-api/src/test/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriterTest.java
+++ 
b/surefire-api/src/test/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriterTest.java
@@ -142,4 +142,22 @@ public class LegacyPojoStackTraceWriterTest
         }
     }
 
+    public void testMultiLineMessage()
+    {
+        String msg =
+            "assert \"foo\" == \"bar\"\n"
+                + "             |\n"
+                + "             false";
+        try
+        {
+            throw new RuntimeException( msg );
+        }
+        catch ( Throwable t )
+        {
+            LegacyPojoStackTraceWriter writer = new 
LegacyPojoStackTraceWriter( null, null, t );
+            String stackTrace = writer.writeTraceToString();
+            assertTrue( stackTrace.startsWith( "java.lang.RuntimeException: 
\n" + msg ) );
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6e5fb569/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
----------------------------------------------------------------------
diff --git 
a/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
 
b/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
index 3edef98..baef627 100644
--- 
a/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
+++ 
b/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
@@ -53,7 +53,17 @@ public class PojoStackTraceWriter
             t.printStackTrace( stackTrace );
             stackTrace.close();
             w.flush();
-            return w.toString();
+            StringBuffer builder = w.getBuffer();
+            if ( isMultiLineExceptionMessage( t ) )
+            {
+                // SUREFIRE-986
+                String exc = t.getClass().getName() + ": ";
+                if ( builder.toString().startsWith( exc ) )
+                {
+                    builder.insert( exc.length(), '\n' );
+                }
+            }
+            return builder.toString();
         }
         return "";
     }
@@ -72,4 +82,25 @@ public class PojoStackTraceWriter
     {
         return t == null ? null : new SafeThrowable( t );
     }
+
+    private static boolean isMultiLineExceptionMessage( Throwable t )
+    {
+        String msg = t.getLocalizedMessage();
+        if ( msg != null )
+        {
+            int countNewLines = 0;
+            for ( int i = 0, length = msg.length(); i < length; i++ )
+            {
+                if ( msg.charAt( i ) == '\n' )
+                {
+                    if ( ++countNewLines == 2 )
+                    {
+                        break;
+                    }
+                }
+            }
+            return countNewLines > 1 || countNewLines == 1 && 
!msg.trim().endsWith( "\n" );
+        }
+        return false;
+    }
 }

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6e5fb569/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java
----------------------------------------------------------------------
diff --git 
a/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java
 
b/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java
index 603534c..6f4f058 100644
--- 
a/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java
+++ 
b/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java
@@ -292,8 +292,17 @@ public class SmartStackTraceParser
         if ( t != null )
         {
             result += t.getClass().getName();
-            result += ": ";
-            result += t.getMessage();
+            String msg = t.getMessage();
+            if ( msg != null )
+            {
+                result += ": ";
+                if ( isMultiLine( msg ) )
+                {
+                    // SUREFIRE-986
+                    result += "\n";
+                }
+                result += msg;
+            }
             result += "\n";
         }
 
@@ -308,4 +317,20 @@ public class SmartStackTraceParser
         }
         return result;
     }
+
+    private static boolean isMultiLine( String msg )
+    {
+        int countNewLines = 0;
+        for ( int i = 0, length = msg.length(); i < length; i++ )
+        {
+            if ( msg.charAt( i ) == '\n' )
+            {
+                if ( ++countNewLines == 2 )
+                {
+                    break;
+                }
+            }
+        }
+        return countNewLines > 1 || countNewLines == 1 && 
!msg.trim().endsWith( "\n" );
+    }
 }

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6e5fb569/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/PojoStackTraceWriterTest.java
----------------------------------------------------------------------
diff --git 
a/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/PojoStackTraceWriterTest.java
 
b/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/PojoStackTraceWriterTest.java
index 5c3495d..4bb667e 100644
--- 
a/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/PojoStackTraceWriterTest.java
+++ 
b/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/PojoStackTraceWriterTest.java
@@ -36,6 +36,23 @@ public class PojoStackTraceWriterTest
 
     }
 
+    public void testMultiLineMessage()
+    {
+        String msg =
+            "assert \"foo\" == \"bar\"\n"
+            + "             |\n"
+            + "             false";
+        try
+        {
+            throw new RuntimeException( msg );
+        }
+        catch ( Throwable t )
+        {
+            PojoStackTraceWriter writer = new PojoStackTraceWriter( null, 
null, t );
+            String stackTrace = writer.writeTraceToString();
+            assertTrue( stackTrace.startsWith( "java.lang.RuntimeException: 
\n" + msg ) );
+        }
+    }
 
     static class ATestClass
     {

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6e5fb569/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java
----------------------------------------------------------------------
diff --git 
a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java
 
b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java
index 52cd342..8292d4b 100644
--- 
a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java
+++ 
b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java
@@ -54,7 +54,24 @@ public class JUnit4StackTraceWriter
       */
     public String writeTraceToString()
     {
-        return junitFailure.getTrace();
+        Throwable t = junitFailure.getException();
+        if ( t != null )
+        {
+            String originalTrace = junitFailure.getTrace();
+            if ( isMultiLineExceptionMessage( t ) )
+            {
+                // SUREFIRE-986
+                StringBuilder builder = new StringBuilder( originalTrace );
+                String exc = t.getClass().getName() + ": ";
+                if ( originalTrace.startsWith( exc ) )
+                {
+                    builder.insert( exc.length(), '\n' );
+                }
+                return builder.toString();
+            }
+            return originalTrace;
+        }
+        return "";
     }
 
 
@@ -106,4 +123,25 @@ public class JUnit4StackTraceWriter
         return new SafeThrowable( junitFailure.getException() );
     }
 
+    private static boolean isMultiLineExceptionMessage( Throwable t )
+    {
+        String msg = t.getLocalizedMessage();
+        if ( msg != null )
+        {
+            int countNewLines = 0;
+            for ( int i = 0, length = msg.length(); i < length; i++ )
+            {
+                if ( msg.charAt( i ) == '\n' )
+                {
+                    if ( ++countNewLines == 2 )
+                    {
+                        break;
+                    }
+                }
+            }
+            return countNewLines > 1 || countNewLines == 1 && 
!msg.trim().endsWith( "\n" );
+        }
+        return false;
+    }
+
 }

Reply via email to