[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() ); + } }