[SUREFIRE-962] Fix handling of non-standard test description in 
SmartStackTraceParser

o the display name may be something else then a class name


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

Branch: refs/heads/master
Commit: b2b934d993302ad23a7275b8484b086bcc93097f
Parents: 8f18aa7
Author: Andreas Gudian <andreas.gud...@gmail.com>
Authored: Sat Feb 23 00:45:27 2013 +0100
Committer: Andreas Gudian <andreas.gud...@gmail.com>
Committed: Sat Feb 23 00:45:27 2013 +0100

----------------------------------------------------------------------
 .../surefire/report/SmartStackTraceParser.java     |   15 ++++-----
 .../surefire/report/SmartStackTraceParserTest.java |   24 +++++++-------
 2 files changed, 19 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/b2b934d9/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 a668806..4923eb9 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
@@ -41,7 +41,6 @@ public class SmartStackTraceParser
 
     private final Class testClass;
 
-
     public SmartStackTraceParser( Class testClass, Throwable throwable )
     {
         this( testClass.getName(), throwable );
@@ -64,11 +63,10 @@ public class SmartStackTraceParser
         }
         catch ( ClassNotFoundException e )
         {
-            throw new RuntimeException( e );
+            return null;
         }
     }
 
-
     private static String getSimpleName( String className )
     {
         int i = className.lastIndexOf( "." );
@@ -78,6 +76,11 @@ public class SmartStackTraceParser
     @SuppressWarnings( "ThrowableResultOfMethodCallIgnored" )
     public String getString()
     {
+        if ( testClass == null )
+        {
+            return throwable.getLocalizedMessage();
+        }
+
         StringBuilder result = new StringBuilder();
         List<StackTraceElement> stackTraceElements = focusOnClass( stackTrace, 
testClass );
         Collections.reverse( stackTraceElements );
@@ -103,8 +106,7 @@ public class SmartStackTraceParser
                 result.append( getSimpleName( stackTraceElement.getClassName() 
) ); // Add the name of the superclas
                 result.append( "." );
             }
-            result.append( stackTraceElement.getMethodName() ).append( ":" 
).append(
-                stackTraceElement.getLineNumber() );
+            result.append( stackTraceElement.getMethodName() ).append( ":" 
).append( stackTraceElement.getLineNumber() );
             result.append( "->" );
         }
 
@@ -189,7 +191,6 @@ public class SmartStackTraceParser
         return result;
     }
 
-
     private static boolean isInSupers( Class testClass, String lookFor )
     {
         if ( lookFor.startsWith( "junit.framework." ) )
@@ -265,5 +266,3 @@ public class SmartStackTraceParser
         return result.toString();
     }
 }
-
-

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/b2b934d9/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java
----------------------------------------------------------------------
diff --git 
a/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java
 
b/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java
index ef42c6a..c97e5b8 100644
--- 
a/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java
+++ 
b/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java
@@ -1,4 +1,5 @@
 package org.apache.maven.surefire.report;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -64,7 +65,6 @@ public class SmartStackTraceParserTest
         }
     }
 
-
     public void testNestedNpe()
         throws Exception
     {
@@ -82,7 +82,6 @@ public class SmartStackTraceParserTest
         }
     }
 
-
     public void testNestedNpeOutsideTest()
         throws Exception
     {
@@ -145,8 +144,7 @@ public class SmartStackTraceParserTest
         {
             SmartStackTraceParser smartStackTraceParser = new 
SmartStackTraceParser( CaseThatWillFail.class, e );
             String res = smartStackTraceParser.getString();
-            assertEquals( "CaseThatWillFail.testThatWillFail:29 expected:<abc> 
but was:<def>",
-                          res );
+            assertEquals( "CaseThatWillFail.testThatWillFail:29 expected:<abc> 
but was:<def>", res );
         }
     }
 
@@ -187,9 +185,7 @@ public class SmartStackTraceParserTest
         {
             SmartStackTraceParser smartStackTraceParser = new 
SmartStackTraceParser( AssertionNoMessage.class, e );
             String res = smartStackTraceParser.getString();
-            assertEquals(
-                "AssertionNoMessage.testThrowSomething:29 expected:<abc> but 
was:<xyz>",
-                res );
+            assertEquals( "AssertionNoMessage.testThrowSomething:29 
expected:<abc> but was:<xyz>", res );
         }
     }
 
@@ -203,9 +199,7 @@ public class SmartStackTraceParserTest
         {
             SmartStackTraceParser smartStackTraceParser = new 
SmartStackTraceParser( FailWithFail.class, e );
             String res = smartStackTraceParser.getString();
-            assertEquals(
-                "FailWithFail.testThatWillFail:29 abc",
-                res );
+            assertEquals( "FailWithFail.testThatWillFail:29 abc", res );
         }
     }
 
@@ -217,8 +211,8 @@ public class SmartStackTraceParserTest
         }
         catch ( Throwable t )
         {
-            List<StackTraceElement> stackTraceElements = 
SmartStackTraceParser.focusInsideClass( t.getStackTrace(),
-                                                                               
                  InnerATestClass.class.getName() );
+            List<StackTraceElement> stackTraceElements =
+                SmartStackTraceParser.focusInsideClass( t.getStackTrace(), 
InnerATestClass.class.getName() );
             assertNotNull( stackTraceElements );
             assertEquals( 5, stackTraceElements.size() );
             StackTraceElement innerMost = stackTraceElements.get( 0 );
@@ -228,4 +222,10 @@ public class SmartStackTraceParserTest
         }
     }
 
+    public void testNonClassNameStacktrace()
+    {
+        SmartStackTraceParser smartStackTraceParser =
+            new SmartStackTraceParser( "Not a class name", new Throwable( "my 
message" ) );
+        assertEquals( "my message", smartStackTraceParser.getString() );
+    }
 }

Reply via email to