You are viewing a plain text version of this content. The canonical link for it is here.
Posted to surefire-commits@maven.apache.org by ca...@apache.org on 2006/06/15 17:49:51 UTC
svn commit: r414622 - in /maven/surefire/trunk/surefire-api: ./
src/main/java/org/apache/maven/surefire/report/
src/test/java/org/apache/maven/surefire/report/
Author: carlos
Date: Thu Jun 15 08:49:51 2006
New Revision: 414622
URL: http://svn.apache.org/viewvc?rev=414622&view=rev
Log:
Refactor ConsoleReporter output
Added:
maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/AbstractConsoleReporterTest.java (with props)
maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/ForkingConsoleReporterTest.java (with props)
Modified:
maven/surefire/trunk/surefire-api/pom.xml
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractConsoleReporter.java
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ForkingConsoleReporter.java
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java
Modified: maven/surefire/trunk/surefire-api/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/pom.xml?rev=414622&r1=414621&r2=414622&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/pom.xml (original)
+++ maven/surefire/trunk/surefire-api/pom.xml Thu Jun 15 08:49:51 2006
@@ -14,6 +14,11 @@
<version>1.1</version>
</dependency>
<dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.1</version>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
Modified: maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractConsoleReporter.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractConsoleReporter.java?rev=414622&r1=414621&r2=414622&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractConsoleReporter.java (original)
+++ maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractConsoleReporter.java Thu Jun 15 08:49:51 2006
@@ -28,6 +28,12 @@
public abstract class AbstractConsoleReporter
extends AbstractTextReporter
{
+ private static final String TEST_SET_STARTING_PREFIX = "Running ";
+
+ private static final String TEST_SET_STARTING_GROUP_PREFIX = " (of ";
+
+ private static final String TEST_SET_STARTING_GROUP_SUFIX = ")";
+
protected static final int BUFFER_SIZE = 4096;
protected AbstractConsoleReporter( String format, Boolean trimStackTrace )
@@ -42,12 +48,7 @@
{
super.testSetStarting( report );
- String message = "Running " + report.getName();
- if ( report.getGroup() != null && !report.getName().equals( report.getGroup() ) )
- {
- message = message + " (of " + report.getGroup() + ")";
- }
- writeMessage( message );
+ writeMessage( getTestSetStartingMessage( report ) );
}
public void runStarting( int testCount )
@@ -82,5 +83,61 @@
writer.println( report.getMessage() );
writer.println( getStackTrace( report ) );
writer.flush();
+ }
+
+ /**
+ * Get the test set starting message for a report.
+ * eg. "Running org.foo.BarTest ( of group )"
+ *
+ * @todo internationalize
+ * @param report report whose test set is starting
+ * @return the message
+ */
+ public String getTestSetStartingMessage( ReportEntry report )
+ {
+ StringBuffer message = new StringBuffer();
+ message.append( TEST_SET_STARTING_PREFIX );
+ message.append( report.getName() );
+
+ if ( report.getGroup() != null && !report.getName().equals( report.getGroup() ) )
+ {
+ message.append( TEST_SET_STARTING_GROUP_PREFIX );
+ message.append( report.getGroup() );
+ message.append( TEST_SET_STARTING_GROUP_SUFIX );
+ }
+ return message.toString();
+ }
+
+ /**
+ * Parses a Surefire test set starting message into a {@link ReportEntry} object.
+ * Only name and group will be set if applicable.
+ *
+ * @param message
+ * @return the parsed {@link ReportEntry}
+ */
+ public ReportEntry parseTestSetStartingMessage( String message )
+ {
+ ReportEntry reportEntry = new ReportEntry();
+ int i = message.indexOf( TEST_SET_STARTING_GROUP_PREFIX );
+ int j;
+ if ( i >= 0 )
+ {
+ j = message.indexOf( TEST_SET_STARTING_GROUP_SUFIX );
+ if ( j <= 0 )
+ {
+ throw new RuntimeException( "Message provided can not be parsed" );
+ }
+ reportEntry.setGroup( message.substring( i + TEST_SET_STARTING_GROUP_PREFIX.length(), j ) );
+ }
+ else
+ {
+ i = message.length();
+ if ( i <= 0 )
+ {
+ throw new RuntimeException( "Message provided can not be parsed" );
+ }
+ }
+ reportEntry.setName( message.substring( TEST_SET_STARTING_PREFIX.length(), i ) );
+ return reportEntry;
}
}
Modified: maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ForkingConsoleReporter.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ForkingConsoleReporter.java?rev=414622&r1=414621&r2=414622&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ForkingConsoleReporter.java (original)
+++ maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ForkingConsoleReporter.java Thu Jun 15 08:49:51 2006
@@ -16,13 +16,28 @@
* limitations under the License.
*/
+/**
+ * Surefire reporter that will prefix surefire output to make it easier to parse when forking tests
+ *
+ * @version $Id$
+ */
public class ForkingConsoleReporter
extends ConsoleReporter
{
+ /**
+ * Surefire output lines not part of header or footer, nor test output will start with this value.
+ * eg. "Running org.foo.BarTest" or "Tests run: ..."
+ */
public static final String FORKING_PREFIX_STANDARD = "@SL";
+ /**
+ * Surefire output lines part of the header will start with this value
+ */
public static final String FORKING_PREFIX_HEADING = "@HL";
+ /**
+ * Surefire output lines part of the footer will start with this value
+ */
public static final String FORKING_PREFIX_FOOTER = "@FL";
public ForkingConsoleReporter( Boolean trimStackTrace )
@@ -30,6 +45,9 @@
super( trimStackTrace );
}
+ /**
+ * Write a header line prepending {@link #FORKING_PREFIX_HEADING}
+ */
public void writeHeading( String message )
{
writer.print( FORKING_PREFIX_HEADING );
@@ -37,6 +55,9 @@
super.writeHeading( message );
}
+ /**
+ * Write a footer line prepending {@link #FORKING_PREFIX_FOOTER}
+ */
public void writeFooter( String footer )
{
writer.print( FORKING_PREFIX_FOOTER );
@@ -45,6 +66,9 @@
super.writeMessage( footer );
}
+ /**
+ * Write a surefire message line prepending {@link #FORKING_PREFIX_STANDARD}
+ */
public void writeMessage( String message )
{
writer.print( FORKING_PREFIX_STANDARD );
Modified: maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java?rev=414622&r1=414621&r2=414622&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java (original)
+++ maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java Thu Jun 15 08:49:51 2006
@@ -16,6 +16,10 @@
* limitations under the License.
*/
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
public class ReportEntry
{
private Object source;
@@ -28,6 +32,10 @@
private StackTraceWriter stackTraceWriter;
+ public ReportEntry()
+ {
+ }
+
public ReportEntry( Object source, String name, String message )
{
this( source, name, null, message );
@@ -58,15 +66,20 @@
throw new NullPointerException( "message is null" );
}
- this.source = source;
+ this.setSource( source );
- this.name = name;
+ this.setName( name );
- this.group = group;
+ this.setGroup( group );
- this.message = message;
+ this.setMessage( message );
- this.stackTraceWriter = stackTraceWriter;
+ this.setStackTraceWriter( stackTraceWriter );
+ }
+
+ public void setSource( Object source )
+ {
+ this.source = source;
}
public Object getSource()
@@ -74,24 +87,89 @@
return source;
}
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
public String getName()
{
return name;
}
+ public void setGroup( String group )
+ {
+ this.group = group;
+ }
+
public String getGroup()
{
return group;
}
+ public void setMessage( String message )
+ {
+ this.message = message;
+ }
+
public String getMessage()
{
return message;
}
+ public void setStackTraceWriter( StackTraceWriter stackTraceWriter )
+ {
+ this.stackTraceWriter = stackTraceWriter;
+ }
+
public StackTraceWriter getStackTraceWriter()
{
return stackTraceWriter;
}
-}
+ public boolean equals( Object obj )
+ {
+ if ( obj instanceof ReportEntry == false )
+ {
+ return false;
+ }
+ if ( this == obj )
+ {
+ return true;
+ }
+ ReportEntry rhs = (ReportEntry) obj;
+ return new EqualsBuilder()
+ .append( getSource(), rhs.getSource() )
+ .append( getName(), rhs.getName() )
+ .append( getGroup(), rhs.getGroup() )
+ .append( getMessage(), rhs.getMessage() )
+ .append( getStackTraceWriter(), rhs.getStackTraceWriter() )
+ .isEquals();
+ }
+
+ public String toString()
+ {
+ return new ToStringBuilder( this )
+ .append( "source", getSource() )
+ .append( "name", getName() )
+ .append( "group", getGroup() )
+ .append( "message", getMessage() )
+ .append( "stackTraceWriter", getStackTraceWriter() )
+ .toString();
+ }
+
+ public int hashCode()
+ {
+ // you pick a hard-coded, randomly chosen, non-zero, odd number
+ // ideally different for each class
+ // good resource at http://primes.utm.edu/lists/small/1000.txt
+ return new HashCodeBuilder( 5897, 6653 )
+ .append( getSource() )
+ .append( getName() )
+ .append( getGroup() )
+ .append( getMessage() )
+ .append( getStackTraceWriter() )
+ .toHashCode();
+ }
+
+}
Added: maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/AbstractConsoleReporterTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/AbstractConsoleReporterTest.java?rev=414622&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/AbstractConsoleReporterTest.java (added)
+++ maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/AbstractConsoleReporterTest.java Thu Jun 15 08:49:51 2006
@@ -0,0 +1,84 @@
+package org.apache.maven.surefire.report;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Test for AbstractConsoleReporter
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class AbstractConsoleReporterTest
+ extends TestCase
+{
+
+ private AbstractConsoleReporter consoleReporter;
+
+ private ReportEntry report;
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ report = new ReportEntry();
+ report.setGroup( "group" );
+ report.setName( "name" );
+ }
+
+ protected void setConsoleReporter( AbstractConsoleReporter consoleReporter )
+ {
+ this.consoleReporter = consoleReporter;
+ }
+
+ protected AbstractConsoleReporter getConsoleReporter()
+ {
+ return consoleReporter;
+ }
+
+ public void testTestSetStarting()
+ throws Exception
+ {
+ consoleReporter.testSetStarting( report );
+ }
+
+ public void testGetTestSetStartingMessage()
+ throws Exception
+ {
+ String message = consoleReporter.getTestSetStartingMessage( report );
+ assertEquals( "Running name (of group)", message );
+
+ report.setGroup( null );
+ message = consoleReporter.getTestSetStartingMessage( report );
+ assertEquals( "Running name", message );
+ }
+
+ public void testParseTestSetStartingMessage()
+ throws Exception
+ {
+ String message = "Running name (of group)";
+ ReportEntry actualReport = consoleReporter.parseTestSetStartingMessage( message );
+ assertEquals( report, actualReport );
+
+ report.setGroup( null );
+ message = "Running name";
+ actualReport = consoleReporter.parseTestSetStartingMessage( message );
+ assertEquals( report, actualReport );
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/AbstractConsoleReporterTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/AbstractConsoleReporterTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/ForkingConsoleReporterTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/ForkingConsoleReporterTest.java?rev=414622&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/ForkingConsoleReporterTest.java (added)
+++ maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/ForkingConsoleReporterTest.java Thu Jun 15 08:49:51 2006
@@ -0,0 +1,37 @@
+package org.apache.maven.surefire.report;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Test for {@link ForkingConsoleReporter}
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class ForkingConsoleReporterTest
+ extends AbstractConsoleReporterTest
+{
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ ForkingConsoleReporter consoleReporter = new ForkingConsoleReporter( Boolean.TRUE );
+ setConsoleReporter( consoleReporter );
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/ForkingConsoleReporterTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/ForkingConsoleReporterTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"