Repository: maven-surefire Updated Branches: refs/heads/SUREFIRE-1317 8b656ae81 -> 4c502fd21 (forced update)
SUREFIRE-1317 Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/4c502fd2 Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/4c502fd2 Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/4c502fd2 Branch: refs/heads/SUREFIRE-1317 Commit: 4c502fd2176fcdb0ded953fe22310759e4b4e188 Parents: 1c9df46 Author: Tibor17 <tibo...@lycos.com> Authored: Thu Feb 9 23:00:39 2017 +0100 Committer: Tibor17 <tibo...@lycos.com> Committed: Sat Feb 11 11:01:10 2017 +0100 ---------------------------------------------------------------------- maven-surefire-common/pom.xml | 1 + .../plugin/surefire/AbstractSurefireMojo.java | 1 + .../output/DeserializedStacktraceWriter.java | 2 +- .../booterclient/output/ForkClient.java | 23 +++++++++-- .../maven/plugins/surefire/report/Utils.java | 1 + .../surefire/booter/MasterProcessCommand.java | 8 ++-- .../surefire/report/CategorizedReportEntry.java | 17 +++----- .../report/LegacyPojoStackTraceWriter.java | 2 +- .../maven/surefire/report/SafeThrowable.java | 5 +++ .../surefire/util/internal/StringUtils.java | 43 ++++++++++---------- .../surefire/report/PojoStackTraceWriter.java | 4 +- 11 files changed, 62 insertions(+), 45 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4c502fd2/maven-surefire-common/pom.xml ---------------------------------------------------------------------- diff --git a/maven-surefire-common/pom.xml b/maven-surefire-common/pom.xml index 54825b7..ae71f0d 100644 --- a/maven-surefire-common/pom.xml +++ b/maven-surefire-common/pom.xml @@ -141,6 +141,7 @@ </executions> </plugin> <plugin> + <!-- Remove in 3.0 --> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4c502fd2/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java index 4f7744f..99eca2c 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java @@ -234,6 +234,7 @@ public abstract class AbstractSurefireMojo * unless overridden. */ @Parameter + // TODO use regex for fully qualified class names in 3.0 and change the filtering abilities private List<String> excludes; /** http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4c502fd2/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/DeserializedStacktraceWriter.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/DeserializedStacktraceWriter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/DeserializedStacktraceWriter.java index 8832a36..952feb8 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/DeserializedStacktraceWriter.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/DeserializedStacktraceWriter.java @@ -64,6 +64,6 @@ public class DeserializedStacktraceWriter public SafeThrowable getThrowable() { - return new SafeThrowable( new Throwable( message ) ); + return new SafeThrowable( message ); } } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4c502fd2/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java index 68ce40d..cb7deec 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java @@ -68,6 +68,8 @@ import static org.apache.maven.surefire.util.internal.StringUtils.isNotBlank; import static org.apache.maven.surefire.util.internal.StringUtils.unescapeBytes; import static org.apache.maven.surefire.util.internal.StringUtils.unescapeString; +// todo move to the same package with ForkStarter + /** * Knows how to reconstruct *all* the state transmitted over stdout by the forked process. * @@ -284,17 +286,30 @@ public class ForkClient } catch ( NumberFormatException e ) { + // native stream sent a text e.g. GC verbose // SUREFIRE-859 - LostCommandsDumpSingleton.getSingleton().dumpException( e, s, defaultReporterFactory ); + String msg = "Corrupted native stream e.g. GC verbose. Received stream: '" + s + "'."; + LostCommandsDumpSingleton.getSingleton().dumpException( e, msg, defaultReporterFactory ); } catch ( NoSuchElementException e ) { + // native stream sent a text e.g. GC verbose // SUREFIRE-859 - LostCommandsDumpSingleton.getSingleton().dumpException( e, s, defaultReporterFactory ); + String msg = "Corrupted native stream e.g. GC verbose. Received stream: '" + s + "'."; + LostCommandsDumpSingleton.getSingleton().dumpException( e, msg, defaultReporterFactory ); } - catch ( ReporterException e ) + catch ( IndexOutOfBoundsException e ) + { + // native stream sent a text e.g. GC verbose + String msg = "Corrupted native stream e.g. GC verbose. Received stream: '" + s + "'."; + LostCommandsDumpSingleton.getSingleton().dumpException( e, msg, defaultReporterFactory ); + throw e; + } + catch ( RuntimeException e ) { - LostCommandsDumpSingleton.getSingleton().dumpException( e, s, defaultReporterFactory ); + // e.g. ReporterException + String msg = "Possibly reporter failure. Received stream: '" + s + "'."; + LostCommandsDumpSingleton.getSingleton().dumpException( e, msg, defaultReporterFactory ); throw e; } } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4c502fd2/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/Utils.java ---------------------------------------------------------------------- diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/Utils.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/Utils.java index 8fd91bf..d2cb04e 100644 --- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/Utils.java +++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/Utils.java @@ -23,6 +23,7 @@ public final class Utils { private Utils() { + throw new IllegalStateException( "no instantiable constructor" ); } public static String toSystemNewLine( String s ) http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4c502fd2/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessCommand.java ---------------------------------------------------------------------- diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessCommand.java b/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessCommand.java index a53a046..0456abe 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessCommand.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessCommand.java @@ -19,8 +19,6 @@ package org.apache.maven.surefire.booter; * under the License. */ -import org.apache.maven.surefire.util.internal.StringUtils; - import java.io.DataInputStream; import java.io.EOFException; import java.io.IOException; @@ -49,7 +47,7 @@ public enum MasterProcessCommand /** To tell a forked process that the master process is still alive. Repeated after 10 seconds. */ NOOP( 4, Void.class ); - private static final Charset ASCII = Charset.forName( "ASCII" ); + private static final Charset ASCII = Charset.forName( "US-ASCII" ); private final int id; @@ -170,7 +168,7 @@ public enum MasterProcessCommand case RUN_CLASS: return new String( data, FORK_STREAM_CHARSET_NAME ); case SHUTDOWN: - return StringUtils.decode( data, ASCII ); + return new String( data, ASCII ); default: return null; } @@ -188,7 +186,7 @@ public enum MasterProcessCommand case RUN_CLASS: return encodeStringForForkCommunication( data ); case SHUTDOWN: - return StringUtils.encode( data, ASCII ); + return data.getBytes( ASCII ); default: return new byte[0]; } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4c502fd2/surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.java ---------------------------------------------------------------------- diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.java b/surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.java index 77cfaf3..0cccd6e 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.java @@ -67,17 +67,7 @@ public class CategorizedReportEntry @Override public String getNameWithGroup() { - StringBuilder result = new StringBuilder(); - result.append( getName() ); - - if ( getGroup() != null && !getName().equals( getGroup() ) ) - { - result.append( GROUP_PREFIX ); - result.append( getGroup() ); - result.append( GROUP_SUFIX ); - } - - return result.toString(); + return isNameWithGroup() ? getName() + GROUP_PREFIX + getGroup() + GROUP_SUFIX : getName(); } public boolean equals( Object o ) @@ -107,4 +97,9 @@ public class CategorizedReportEntry result = 31 * result + ( group != null ? group.hashCode() : 0 ); return result; } + + private boolean isNameWithGroup() + { + return getGroup() != null && !getGroup().equals( getName() ); + } } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4c502fd2/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 6ff45de..d1e1890 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 @@ -69,7 +69,7 @@ public class LegacyPojoStackTraceWriter { // SUREFIRE-986 String exc = t.getClass().getName() + ": "; - if ( builder.toString().startsWith( exc ) ) + if ( StringUtils.startsWith( builder, exc ) ) { builder.insert( exc.length(), '\n' ); } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4c502fd2/surefire-api/src/main/java/org/apache/maven/surefire/report/SafeThrowable.java ---------------------------------------------------------------------- diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/SafeThrowable.java b/surefire-api/src/main/java/org/apache/maven/surefire/report/SafeThrowable.java index 60c7897..b3b86f2 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/report/SafeThrowable.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/report/SafeThrowable.java @@ -31,6 +31,11 @@ public class SafeThrowable this.target = target; } + public SafeThrowable( String message ) + { + this( new Throwable( message ) ); + } + public String getLocalizedMessage() { try http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4c502fd2/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/StringUtils.java ---------------------------------------------------------------------- diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/StringUtils.java b/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/StringUtils.java index 830cace..d1838b2 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/StringUtils.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/StringUtils.java @@ -345,41 +345,40 @@ public final class StringUtils return ByteBuffer.wrap( out, 0, outPos ); } - public static String decode( byte[] toDecode, Charset charset ) - { - try - { - // @todo use new JDK 1.6 constructor String(byte bytes[], Charset charset) - return new String( toDecode, charset.name() ); - } - catch ( UnsupportedEncodingException e ) - { - throw new RuntimeException( "The JVM must support Charset " + charset, e ); - } - } - - public static byte[] encode( String toEncode, Charset charset ) + public static byte[] encodeStringForForkCommunication( String string ) { try { - // @todo use new JDK 1.6 method getBytes(Charset charset) - return toEncode.getBytes( charset.name() ); + return string.getBytes( FORK_STREAM_CHARSET_NAME ); } catch ( UnsupportedEncodingException e ) { - throw new RuntimeException( "The JVM must support Charset " + charset, e ); + throw new RuntimeException( "The JVM must support Charset " + FORK_STREAM_CHARSET_NAME, e ); } } - public static byte[] encodeStringForForkCommunication( String string ) + /** + * + * @param buffer Examined StringBuffer + * @param pattern a pattern which should start in <code>buffer</code> + * @return <tt>true</tt> if buffer's literal starts with given pattern + */ + public static boolean startsWith( StringBuffer buffer, String pattern ) { - try + if ( buffer.length() < pattern.length() ) { - return string.getBytes( FORK_STREAM_CHARSET_NAME ); + return false; } - catch ( UnsupportedEncodingException e ) + else { - throw new RuntimeException( "The JVM must support Charset " + FORK_STREAM_CHARSET_NAME, e ); + for ( int i = 0, len = pattern.length(); i < len; i++ ) + { + if ( buffer.charAt( i ) != pattern.charAt( i ) ) + { + return false; + } + } + return true; } } } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4c502fd2/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 f8e4511..fdbc1be 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 @@ -20,6 +20,8 @@ package org.apache.maven.surefire.report; */ +import org.apache.maven.surefire.util.internal.StringUtils; + import java.io.PrintWriter; import java.io.StringWriter; @@ -64,7 +66,7 @@ public class PojoStackTraceWriter { // SUREFIRE-986 String exc = t.getClass().getName() + ": "; - if ( builder.toString().startsWith( exc ) ) + if ( StringUtils.startsWith( builder, exc ) ) { builder.insert( exc.length(), '\n' ); }