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/19 17:00:45 UTC
svn commit: r415349 - in /maven/surefire/trunk/surefire-booter: ./
src/main/java/org/apache/maven/surefire/booter/
src/main/java/org/apache/maven/surefire/booter/output/ src/test/
src/test/java/ src/test/java/org/ src/test/java/org/apache/ src/test/jav...
Author: carlos
Date: Mon Jun 19 08:00:44 2006
New Revision: 415349
URL: http://svn.apache.org/viewvc?rev=415349&view=rev
Log:
[MSUREFIRE-136] Added option to redirect test output to a file, redirectTestOutputToFile
Added:
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxy.java (with props)
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumer.java (with props)
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumer.java (with props)
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumerProxy.java (with props)
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumer.java (with props)
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/StandardOutputConsumer.java (with props)
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxy.java (with props)
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxy.java (with props)
maven/surefire/trunk/surefire-booter/src/test/
maven/surefire/trunk/surefire-booter/src/test/java/
maven/surefire/trunk/surefire-booter/src/test/java/org/
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/AbstractOutputConsumerTest.java (with props)
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxyTest.java (with props)
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumerTest.java (with props)
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/OutputConsumerProxyTest.java (with props)
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumerTest.java (with props)
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/StandardOutputConsumerTest.java (with props)
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxyTest.java (with props)
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxyTest.java (with props)
Modified:
maven/surefire/trunk/surefire-booter/pom.xml
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkingWriterStreamConsumer.java
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java
Modified: maven/surefire/trunk/surefire-booter/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/pom.xml?rev=415349&r1=415348&r2=415349&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/pom.xml (original)
+++ maven/surefire/trunk/surefire-booter/pom.xml Mon Jun 19 08:00:44 2006
@@ -15,7 +15,9 @@
~ limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>surefire</artifactId>
<groupId>org.apache.maven.surefire</groupId>
@@ -34,6 +36,12 @@
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>jmock</groupId>
+ <artifactId>jmock</artifactId>
+ <version>1.0.1</version>
<scope>test</scope>
</dependency>
</dependencies>
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkingWriterStreamConsumer.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkingWriterStreamConsumer.java?rev=415349&r1=415348&r2=415349&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkingWriterStreamConsumer.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkingWriterStreamConsumer.java Mon Jun 19 08:00:44 2006
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import org.apache.maven.surefire.booter.output.ForkingStreamConsumer;
import org.apache.maven.surefire.report.ForkingConsoleReporter;
import org.codehaus.plexus.util.cli.StreamConsumer;
@@ -23,6 +24,7 @@
import java.io.Writer;
/**
+ * @deprecated use {@link ForkingStreamConsumer}
* @author Jason van Zyl
* @version $Revision$
*/
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java?rev=415349&r1=415348&r2=415349&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java Mon Jun 19 08:00:44 2006
@@ -16,22 +16,11 @@
* limitations under the License.
*/
-import org.apache.maven.surefire.Surefire;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.NestedRuntimeException;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.cli.CommandLineException;
-import org.codehaus.plexus.util.cli.CommandLineUtils;
-import org.codehaus.plexus.util.cli.StreamConsumer;
-
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
@@ -43,7 +32,21 @@
import java.util.List;
import java.util.Map;
import java.util.Properties;
-import java.util.Arrays;
+
+import org.apache.maven.surefire.Surefire;
+import org.apache.maven.surefire.booter.output.FileOutputConsumerProxy;
+import org.apache.maven.surefire.booter.output.ForkingStreamConsumer;
+import org.apache.maven.surefire.booter.output.OutputConsumer;
+import org.apache.maven.surefire.booter.output.StandardOutputConsumer;
+import org.apache.maven.surefire.booter.output.SupressFooterOutputConsumerProxy;
+import org.apache.maven.surefire.booter.output.SupressHeaderOutputConsumerProxy;
+import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.util.NestedRuntimeException;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.cli.StreamConsumer;
/**
* @author Jason van Zyl
@@ -61,6 +64,8 @@
private List surefireBootClassPathUrls = new ArrayList();
private List testSuites = new ArrayList();
+
+ private boolean redirectTestOutputToFile = false;
// ----------------------------------------------------------------------
//
@@ -76,6 +81,8 @@
private boolean childDelegation = true;
+ private File reportsDirectory;
+
static
{
try
@@ -123,6 +130,35 @@
surefireClassPathUrls.add( path );
}
}
+
+ /**
+ * When forking, setting this to true will make the test output to be saved in a file
+ * instead of showing it on the standard output
+ *
+ * @param redirectTestOutputToFile
+ */
+ public void setRedirectTestOutputToFile( boolean redirectTestOutputToFile )
+ {
+ this.redirectTestOutputToFile = redirectTestOutputToFile;
+ }
+
+ /**
+ * Set the directory where reports will be saved
+ *
+ * @param reportsDirectory the directory
+ */
+ public void setReportsDirectory( File reportsDirectory )
+ {
+ this.reportsDirectory = reportsDirectory;
+ }
+
+ /**
+ * Get the directory where reports will be saved
+ */
+ public File getReportsDirectory()
+ {
+ return reportsDirectory;
+ }
public void setForkConfiguration( ForkConfiguration forkConfiguration )
{
@@ -466,11 +502,9 @@
cli.createArgument().setFile( systemProperties );
}
- Writer consoleWriter = new OutputStreamWriter( System.out );
+ StreamConsumer out = getForkingStreamConsumer( showHeading, showFooter, redirectTestOutputToFile );
- StreamConsumer out = new ForkingWriterStreamConsumer( consoleWriter, showHeading, showFooter );
-
- StreamConsumer err = new ForkingWriterStreamConsumer( consoleWriter, showHeading, showFooter );
+ StreamConsumer err = getForkingStreamConsumer( showHeading, showFooter, redirectTestOutputToFile );
if ( forkConfiguration.isDebug() )
{
@@ -775,5 +809,27 @@
}
addSurefireClassPathUrl( path );
}
+
+ private StreamConsumer getForkingStreamConsumer( boolean showHeading, boolean showFooter, boolean showTestOutput )
+ {
+ OutputConsumer outputConsumer = new StandardOutputConsumer();
+
+ if ( !showTestOutput )
+ {
+ outputConsumer = new FileOutputConsumerProxy( outputConsumer, getReportsDirectory() );
+ }
+
+ if ( !showHeading )
+ {
+ outputConsumer = new SupressHeaderOutputConsumerProxy( outputConsumer );
+ }
+ if ( !showFooter )
+ {
+ outputConsumer = new SupressFooterOutputConsumerProxy( outputConsumer );
+ }
+
+ return new ForkingStreamConsumer( outputConsumer );
+ }
}
+
Added: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxy.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxy.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxy.java (added)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxy.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,141 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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 java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import org.apache.maven.surefire.report.ReportEntry;
+
+/**
+ * Surefire output consumer proxy that writes test output to a {@link File} for each test suite.
+ *
+ * @since 2.1
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class FileOutputConsumerProxy
+ extends OutputConsumerProxy
+{
+
+ private static final String USER_DIR = System.getProperty( "user.dir" );
+
+ private File reportsDirectory;
+
+ private PrintWriter printWriter;
+
+ /**
+ * Create a consumer that will write to a {@link File} for each test.
+ * Files will be saved in working directory.
+ */
+ public FileOutputConsumerProxy( OutputConsumer outputConsumer )
+ {
+ this( outputConsumer, new File( USER_DIR ) );
+ }
+
+ /**
+ * Create a consumer that will write to a {@link File} for each test
+ *
+ * @param reportsDirectory directory where files will be saved
+ */
+ public FileOutputConsumerProxy( OutputConsumer outputConsumer, File reportsDirectory )
+ {
+ super( outputConsumer );
+ this.setReportsDirectory( reportsDirectory );
+ }
+
+ /**
+ * Set the directory where reports will be saved
+ *
+ * @param reportsDirectory the directory
+ */
+ public void setReportsDirectory( File reportsDirectory )
+ {
+ this.reportsDirectory = reportsDirectory;
+ }
+
+ /**
+ * Get the directory where reports will be saved
+ */
+ public File getReportsDirectory()
+ {
+ return reportsDirectory;
+ }
+
+ /**
+ * Set the {@link PrintWriter} used for the current test suite
+ *
+ * @param writer
+ */
+ public void setPrintWriter( PrintWriter writer )
+ {
+ this.printWriter = writer;
+ }
+
+ /**
+ * Get the {@link PrintWriter} used for the current test suite
+ */
+ public PrintWriter getPrintWriter()
+ {
+ return printWriter;
+ }
+
+ public void testSetStarting( ReportEntry reportEntry )
+ {
+ if ( getPrintWriter() != null )
+ {
+ throw new IllegalStateException( "testSetStarting called twice" );
+ }
+ File file = new File( getReportsDirectory(), reportEntry.getName() + "-output.txt" );
+ try
+ {
+ setPrintWriter( new PrintWriter( new BufferedWriter( new FileWriter( file ) ) ) );
+ }
+ catch ( IOException e )
+ {
+ throw new RuntimeException( e );
+ }
+ super.testSetStarting( reportEntry );
+ }
+
+ public void testSetCompleted()
+ {
+ if ( getPrintWriter() == null )
+ {
+ throw new IllegalStateException( "testSetCompleted called before testSetStarting" );
+ }
+ getPrintWriter().close();
+ setPrintWriter( null );
+ super.testSetCompleted();
+ }
+
+ /**
+ * Write the output to the current test file
+ */
+ public void consumeOutputLine( String line )
+ {
+ if ( getPrintWriter() == null )
+ {
+ throw new IllegalStateException( "consumeOutputLine called before testSetStarting" );
+ }
+ getPrintWriter().write( line );
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxy.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumer.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumer.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumer.java (added)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumer.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,74 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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 org.apache.maven.surefire.report.ForkingConsoleReporter;
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+/**
+ * {@link StreamConsumer} that understands Surefire output made by {@link ForkingConsoleReporter}
+ * and filters it depending on configuration options
+ *
+ * @since 2.1
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class ForkingStreamConsumer
+ implements StreamConsumer
+{
+ private static int STANDARD_PREFIX_LENGTH = ForkingConsoleReporter.FORKING_PREFIX_STANDARD.length();
+
+ private static int HEADING_PREFIX_LENGTH = ForkingConsoleReporter.FORKING_PREFIX_HEADING.length();
+
+ private static int FOOTER_PREFIX_LENGTH = ForkingConsoleReporter.FORKING_PREFIX_FOOTER.length();
+
+ private OutputConsumer outputConsumer;
+
+ public ForkingStreamConsumer( OutputConsumer outputConsumer )
+ {
+ this.outputConsumer = outputConsumer;
+ }
+
+ public void consumeLine( String line )
+ {
+ if ( line.startsWith( ForkingConsoleReporter.FORKING_PREFIX_HEADING ) )
+ {
+ outputConsumer.consumeHeaderLine( line.substring( HEADING_PREFIX_LENGTH ) );
+ }
+ else if ( line.startsWith( ForkingConsoleReporter.FORKING_PREFIX_STANDARD ) )
+ {
+ String message = line.substring( STANDARD_PREFIX_LENGTH );
+ if ( ForkingConsoleReporter.isTestSetStartingMessage( message ) )
+ {
+ outputConsumer.testSetStarting( ForkingConsoleReporter.parseTestSetStartingMessage( message ) );
+ }
+ else if ( ForkingConsoleReporter.isTestSetCompletedMessage( message ) )
+ {
+ outputConsumer.testSetCompleted();
+ }
+ outputConsumer.consumeMessageLine( message );
+ }
+ else if ( line.startsWith( ForkingConsoleReporter.FORKING_PREFIX_FOOTER ) )
+ {
+ outputConsumer.consumeFooterLine( line.substring( FOOTER_PREFIX_LENGTH ) );
+ }
+ else
+ {
+ outputConsumer.consumeOutputLine( line );
+ }
+ }
+}
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumer.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumer.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumer.java (added)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumer.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,72 @@
+package org.apache.maven.surefire.booter.output;
+
+import org.apache.maven.surefire.report.ReportEntry;
+
+/*
+ * Copyright 2001-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.
+ */
+
+/**
+ * Surefire output consumer that will be called from Surefire when forking tests to process
+ * the lines of the surefire header, messages, footer and test output from the forked Surefire execution.
+ *
+ * @since 2.1
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public interface OutputConsumer
+{
+
+ /**
+ * Process a line from Surefire header
+ *
+ * @param line the line to process
+ */
+ void consumeHeaderLine( String line );
+
+ /**
+ * Process a line with a Surefire message (not part of test output)
+ *
+ * @param line the line to process
+ */
+ void consumeMessageLine( String line );
+
+ /**
+ * Process a line from Surefire footer
+ *
+ * @param line the line to process
+ */
+ void consumeFooterLine( String line );
+
+ /**
+ * Process a line from test output
+ *
+ * @param line the line to process
+ */
+ void consumeOutputLine( String line );
+
+ /**
+ * This method will be called when a test set starts, before consuming surefire message lines.
+ *
+ * @param reportEntry The {@link ReportEntry} with the name and group (optional) of the test that starts
+ */
+ void testSetStarting( ReportEntry reportEntry );
+
+ /**
+ * This method will be called when a test set ends, after consuming all its surefire message lines.
+ */
+ void testSetCompleted();
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumerProxy.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumerProxy.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumerProxy.java (added)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumerProxy.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,112 @@
+package org.apache.maven.surefire.booter.output;
+
+import org.apache.maven.surefire.report.ReportEntry;
+
+/*
+ * 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.
+ */
+
+/**
+ * Surefire output consumer that will delegate to another {@link OutputConsumer}
+ *
+ * @since 2.1
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class OutputConsumerProxy
+ implements OutputConsumer
+{
+
+ private OutputConsumer outputConsumer;
+
+ /**
+ * Create a output consumer that will delegate all calls to the proxied output consumer
+ *
+ * @param outputConsumer output consumer to delegate to
+ */
+ public OutputConsumerProxy( OutputConsumer outputConsumer )
+ {
+ this.setOutputConsumer( outputConsumer );
+ }
+
+ /**
+ * {@link OutputConsumer} that calls will be delegated to
+ *
+ * @param outputConsumer the proxied {@link OutputConsumer}
+ */
+ public void setOutputConsumer( OutputConsumer outputConsumer )
+ {
+ this.outputConsumer = outputConsumer;
+ }
+
+ /**
+ * {@link OutputConsumer} that calls will be delegated to
+ *
+ * @return the proxied {@link OutputConsumer}
+ */
+ public OutputConsumer getOutputConsumer()
+ {
+ return outputConsumer;
+ }
+
+ /**
+ * Delegate to proxied {@link OutputConsumer}
+ */
+ public void consumeHeaderLine( String line )
+ {
+ getOutputConsumer().consumeHeaderLine( line );
+ }
+
+ /**
+ * Delegate to proxied {@link OutputConsumer}
+ */
+ public void consumeMessageLine( String line )
+ {
+ getOutputConsumer().consumeMessageLine( line );
+ }
+
+ /**
+ * Delegate to proxied {@link OutputConsumer}
+ */
+ public void consumeFooterLine( String line )
+ {
+ getOutputConsumer().consumeFooterLine( line );
+ }
+
+ /**
+ * Delegate to proxied {@link OutputConsumer}
+ */
+ public void consumeOutputLine( String line )
+ {
+ getOutputConsumer().consumeOutputLine( line );
+ }
+
+ /**
+ * Delegate to proxied {@link OutputConsumer}
+ */
+ public void testSetStarting( ReportEntry reportEntry )
+ {
+ getOutputConsumer().testSetStarting( reportEntry );
+ }
+
+ /**
+ * Delegate to proxied {@link OutputConsumer}
+ */
+ public void testSetCompleted()
+ {
+ getOutputConsumer().testSetCompleted();
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumerProxy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/OutputConsumerProxy.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumer.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumer.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumer.java (added)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumer.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,119 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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 java.io.PrintWriter;
+import java.io.Writer;
+
+import org.apache.maven.surefire.report.ReportEntry;
+
+/**
+ * Surefire output consumer that writes everything to a {@link Writer}
+ *
+ * @since 2.1
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class PrintWriterOutputConsumer
+ implements OutputConsumer
+{
+
+ private PrintWriter printWriter;
+
+ /**
+ * Create a consumer uninitialized, {@link #setPrintWriter(PrintWriter)} must be called before using it
+ */
+ public PrintWriterOutputConsumer()
+ {
+ }
+
+ /**
+ * Create a consumer that will write to the specified {@link Writer}
+ *
+ * @param writer where to write to
+ */
+ public PrintWriterOutputConsumer( Writer writer )
+ {
+ this.setPrintWriter( new PrintWriter( writer ) );
+ }
+
+ /**
+ * Set the {@link PrintWriter} used by this object
+ *
+ * @param writer
+ */
+ public void setPrintWriter( PrintWriter writer )
+ {
+ this.printWriter = writer;
+ }
+
+ /**
+ * Get the {@link PrintWriter} used by this object
+ */
+ public PrintWriter getPrintWriter()
+ {
+ return printWriter;
+ }
+
+ public void consumeHeaderLine( String line )
+ {
+ write( line );
+ }
+
+ public void consumeMessageLine( String line )
+ {
+ write( line );
+ }
+
+ public void consumeFooterLine( String line )
+ {
+ write( line );
+ }
+
+ public void consumeOutputLine( String line )
+ {
+ write( line );
+ }
+
+ /**
+ * Do nothing
+ */
+ public void testSetStarting( ReportEntry reportEntry )
+ {
+ // do nothing
+ }
+
+ /**
+ * Do nothing
+ */
+ public void testSetCompleted()
+ {
+ // do nothing
+ }
+
+ /**
+ * Write a line and flush
+ *
+ * @param line
+ */
+ private void write( String line )
+ {
+ getPrintWriter().println( line );
+ getPrintWriter().flush();
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/StandardOutputConsumer.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/StandardOutputConsumer.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/StandardOutputConsumer.java (added)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/StandardOutputConsumer.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,40 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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 java.io.PrintWriter;
+
+/**
+ * Surefire output consumer that writes everything to {@link System#out}
+ *
+ * @since 2.1
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class StandardOutputConsumer
+ extends PrintWriterOutputConsumer
+{
+
+ /**
+ * Create a consumer that will write to {@link System#out}
+ */
+ public StandardOutputConsumer()
+ {
+ setPrintWriter( new PrintWriter( System.out ) );
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/StandardOutputConsumer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/StandardOutputConsumer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxy.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxy.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxy.java (added)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxy.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,48 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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.
+ */
+
+/**
+ * Surefire output consumer that will take out the surefire footer
+ *
+ * @since 2.1
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class SupressFooterOutputConsumerProxy
+ extends OutputConsumerProxy
+{
+
+ /**
+ * Create a consumer that will delegate all calls to the next filter but {@link #consumeFooterLine(String)}
+ *
+ * @param nextFilter filter to delegate to
+ */
+ public SupressFooterOutputConsumerProxy( OutputConsumer nextFilter )
+ {
+ super( nextFilter );
+ }
+
+ /**
+ * Do nothing
+ */
+ public void consumeFooterLine( String line )
+ {
+ /* do nothing */
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxy.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxy.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxy.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxy.java (added)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxy.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,48 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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.
+ */
+
+/**
+ * Surefire output consumer that will take out the surefire header
+ *
+ * @since 2.1
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class SupressHeaderOutputConsumerProxy
+ extends OutputConsumerProxy
+{
+
+ /**
+ * Create a consumer that will delegate all calls to the next filter but {@link #consumeHeaderLine(String)}
+ *
+ * @param nextFilter filter to delegate to
+ */
+ public SupressHeaderOutputConsumerProxy( OutputConsumer nextFilter )
+ {
+ super( nextFilter );
+ }
+
+ /**
+ * Do nothing
+ */
+ public void consumeHeaderLine( String line )
+ {
+ /* do nothing */
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxy.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/AbstractOutputConsumerTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/AbstractOutputConsumerTest.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/AbstractOutputConsumerTest.java (added)
+++ maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/AbstractOutputConsumerTest.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,119 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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 org.apache.maven.surefire.report.ReportEntry;
+
+import junit.framework.TestCase;
+
+/**
+ * Test for {@link OutputConsumer}
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class AbstractOutputConsumerTest
+ extends TestCase
+{
+
+ private OutputConsumer outputConsumer;
+
+ private String line;
+
+ private ReportEntry reportEntry;
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ setLine( "line" );
+ setReportEntry( new ReportEntry() );
+ getReportEntry().setGroup( "group" );
+ getReportEntry().setName( "name" );
+ }
+
+ public void setOutputConsumer( OutputConsumer outputConsumer )
+ {
+ this.outputConsumer = outputConsumer;
+ }
+
+ public OutputConsumer getOutputConsumer()
+ {
+ return outputConsumer;
+ }
+
+ public void setLine( String line )
+ {
+ this.line = line;
+ }
+
+ public String getLine()
+ {
+ return line;
+ }
+
+ public void setReportEntry( ReportEntry reportEntry )
+ {
+ this.reportEntry = reportEntry;
+ }
+
+ public ReportEntry getReportEntry()
+ {
+ return reportEntry;
+ }
+
+ public void testConsumeHeaderLine()
+ {
+ getOutputConsumer().testSetStarting( getReportEntry() );
+ getOutputConsumer().consumeHeaderLine( getLine() );
+ getOutputConsumer().testSetCompleted();
+ }
+
+ public void testConsumeMessageLine()
+ {
+ getOutputConsumer().testSetStarting( getReportEntry() );
+ getOutputConsumer().consumeMessageLine( getLine() );
+ getOutputConsumer().testSetCompleted();
+ }
+
+ public void testConsumeFooterLine()
+ {
+ getOutputConsumer().testSetStarting( getReportEntry() );
+ getOutputConsumer().consumeFooterLine( getLine() );
+ getOutputConsumer().testSetCompleted();
+ }
+
+ public void testConsumeOutputLine()
+ throws Exception
+ {
+ getOutputConsumer().testSetStarting( getReportEntry() );
+ getOutputConsumer().consumeOutputLine( getLine() );
+ getOutputConsumer().testSetCompleted();
+ }
+
+ public void testTestSetStarting()
+ {
+ getOutputConsumer().testSetStarting( getReportEntry() );
+ }
+
+ public void testTestSetCompleted()
+ {
+ getOutputConsumer().testSetStarting( getReportEntry() );
+ getOutputConsumer().testSetCompleted();
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/AbstractOutputConsumerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/AbstractOutputConsumerTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxyTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxyTest.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxyTest.java (added)
+++ maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxyTest.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,81 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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 java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+
+import org.jmock.core.constraint.IsEqual;
+import org.jmock.core.matcher.InvokeOnceMatcher;
+
+/**
+ * Test for {@link FileOutputConsumerProxy}
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class FileOutputConsumerProxyTest
+ extends OutputConsumerProxyTest
+{
+
+ private static final String USER_DIR = System.getProperty( "user.dir" );
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ setOutputConsumer( new FileOutputConsumerProxy( (OutputConsumer) getOutputConsumerMock().proxy() ) );
+ }
+
+ public void testConsumeOutputLine()
+ throws Exception
+ {
+ File reportFile = new File( USER_DIR, getReportEntry().getName() + "-output.txt" );
+ reportFile.delete();
+
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "testSetStarting" )
+ .with( new IsEqual( getReportEntry() ) );
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "testSetCompleted" );
+ getOutputConsumer().testSetStarting( getReportEntry() );
+ getOutputConsumer().consumeOutputLine( getLine() );
+ getOutputConsumer().testSetCompleted();
+ getOutputConsumerMock().verify();
+
+ assertTrue( reportFile.exists() );
+
+ BufferedReader in = null;
+ try
+ {
+ in = new BufferedReader( new InputStreamReader( new FileInputStream( reportFile ) ) );
+ String content = in.readLine();
+ assertEquals( getLine(), content );
+ assertNull( in.readLine() );
+ }
+ finally
+ {
+ if ( in != null )
+ {
+ in.close();
+ }
+ }
+
+ reportFile.delete();
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxyTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/FileOutputConsumerProxyTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumerTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumerTest.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumerTest.java (added)
+++ maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumerTest.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,103 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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 org.apache.maven.surefire.report.ForkingConsoleReporter;
+import org.apache.maven.surefire.report.ReportEntry;
+import org.jmock.Mock;
+import org.jmock.MockObjectTestCase;
+
+/**
+ * Test for {@link ForkingStreamConsumer}
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class ForkingStreamConsumerTest
+ extends MockObjectTestCase
+{
+
+ private ForkingStreamConsumer streamConsumer;
+
+ private Mock outputConsumerMock;
+
+ private String message;
+
+ private ReportEntry reportEntry;
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ outputConsumerMock = new Mock( OutputConsumer.class );
+ streamConsumer = new ForkingStreamConsumer( (OutputConsumer) outputConsumerMock.proxy() );
+ message = "message";
+ reportEntry = new ReportEntry();
+ reportEntry.setGroup( "group" );
+ reportEntry.setName( "name" );
+ }
+
+ public void testConsumeHeaderLine()
+ {
+ String message = "message";
+ String line = ForkingConsoleReporter.FORKING_PREFIX_HEADING + message;
+ outputConsumerMock.expects( once() ).method( "consumeHeaderLine" ).with( eq( message ) );
+ streamConsumer.consumeLine( line );
+ }
+
+ public void testConsumeMessageLine()
+ {
+ String message = "message";
+ String line = ForkingConsoleReporter.FORKING_PREFIX_STANDARD + message;
+ outputConsumerMock.expects( once() ).method( "consumeMessageLine" ).with( eq( message ) );
+ streamConsumer.consumeLine( line );
+ }
+
+ public void testConsumeFooterLine()
+ {
+ String message = "message";
+ String line = ForkingConsoleReporter.FORKING_PREFIX_FOOTER + message;
+ outputConsumerMock.expects( once() ).method( "consumeFooterLine" ).with( eq( message ) );
+ streamConsumer.consumeLine( line );
+ }
+
+ public void testConsumeOutputLine()
+ {
+ String line = message;
+ outputConsumerMock.expects( once() ).method( "consumeOutputLine" ).with( eq( message ) );
+ streamConsumer.consumeLine( line );
+ }
+
+ public void testTestSetStarting()
+ {
+ message = ForkingConsoleReporter.getTestSetStartingMessage( reportEntry );
+ String line = ForkingConsoleReporter.FORKING_PREFIX_STANDARD + message;
+ outputConsumerMock.expects( once() ).method( "testSetStarting" ).with( eq( reportEntry ) );
+ outputConsumerMock.expects( once() ).method( "consumeMessageLine" ).with( eq( message ) );
+ streamConsumer.consumeLine( line );
+ }
+
+ public void testTestSetCompleted()
+ {
+ message = "Tests run: xxxx";
+ String line = ForkingConsoleReporter.FORKING_PREFIX_STANDARD + message;
+ outputConsumerMock.expects( once() ).method( "testSetCompleted" );
+ outputConsumerMock.expects( once() ).method( "consumeMessageLine" ).with( eq( message ) );
+ streamConsumer.consumeLine( line );
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/ForkingStreamConsumerTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/OutputConsumerProxyTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/OutputConsumerProxyTest.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/OutputConsumerProxyTest.java (added)
+++ maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/OutputConsumerProxyTest.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,114 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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 org.jmock.Mock;
+import org.jmock.core.constraint.IsEqual;
+import org.jmock.core.matcher.InvokeOnceMatcher;
+
+/**
+ * Test for {@link OutputConsumerProxy}
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class OutputConsumerProxyTest
+ extends AbstractOutputConsumerTest
+{
+ private Mock outputConsumerMock;
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ setOutputConsumerMock( new Mock( OutputConsumer.class ) );
+ setOutputConsumer( new OutputConsumerProxy( (OutputConsumer) getOutputConsumerMock().proxy() ) );
+ }
+
+ public void setOutputConsumerMock( Mock outputConsumerMock )
+ {
+ this.outputConsumerMock = outputConsumerMock;
+ }
+
+ public Mock getOutputConsumerMock()
+ {
+ return outputConsumerMock;
+ }
+
+ public void testConsumeFooterLine()
+ {
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "testSetStarting" )
+ .with( new IsEqual( getReportEntry() ) );
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "consumeFooterLine" )
+ .with( new IsEqual( getLine() ) );
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "testSetCompleted" );
+ super.testConsumeFooterLine();
+ getOutputConsumerMock().verify();
+ }
+
+ public void testConsumeHeaderLine()
+ {
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "testSetStarting" )
+ .with( new IsEqual( getReportEntry() ) );
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "consumeHeaderLine" )
+ .with( new IsEqual( getLine() ) );
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "testSetCompleted" );
+ super.testConsumeHeaderLine();
+ getOutputConsumerMock().verify();
+ }
+
+ public void testConsumeMessageLine()
+ {
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "testSetStarting" )
+ .with( new IsEqual( getReportEntry() ) );
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "consumeMessageLine" )
+ .with( new IsEqual( getLine() ) );
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "testSetCompleted" );
+ super.testConsumeMessageLine();
+ getOutputConsumerMock().verify();
+ }
+
+ public void testConsumeOutputLine()
+ throws Exception
+ {
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "testSetStarting" )
+ .with( new IsEqual( getReportEntry() ) );
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "consumeOutputLine" )
+ .with( new IsEqual( getLine() ) );
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "testSetCompleted" );
+ super.testConsumeOutputLine();
+ getOutputConsumerMock().verify();
+ }
+
+ public void testTestSetStarting()
+ {
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "testSetStarting" )
+ .with( new IsEqual( getReportEntry() ) );
+ super.testTestSetStarting();
+ getOutputConsumerMock().verify();
+ }
+
+ public void testTestSetCompleted()
+ {
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "testSetStarting" )
+ .with( new IsEqual( getReportEntry() ) );
+ getOutputConsumerMock().expects( new InvokeOnceMatcher() ).method( "testSetCompleted" );
+ super.testTestSetCompleted();
+ getOutputConsumerMock().verify();
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/OutputConsumerProxyTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/OutputConsumerProxyTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumerTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumerTest.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumerTest.java (added)
+++ maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumerTest.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,78 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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 java.io.StringWriter;
+
+/**
+ * Test for {@link PrintWriterOutputConsumer}
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class PrintWriterOutputConsumerTest
+ extends AbstractOutputConsumerTest
+{
+ private StringWriter writer;
+
+ private static final String LINE_SEPARATOR = System.getProperty( "line.separator" );
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ writer = new StringWriter();
+ setOutputConsumer( new PrintWriterOutputConsumer( writer ) );
+ }
+
+ public void testConsumeFooterLine()
+ {
+ super.testConsumeFooterLine();
+ assertEquals( this.getLine() + LINE_SEPARATOR, writer.toString() );
+ }
+
+ public void testConsumeHeaderLine()
+ {
+ super.testConsumeHeaderLine();
+ assertEquals( getLine() + LINE_SEPARATOR, writer.toString() );
+ }
+
+ public void testConsumeMessageLine()
+ {
+ super.testConsumeMessageLine();
+ assertEquals( getLine() + LINE_SEPARATOR, writer.toString() );
+ }
+
+ public void testConsumeOutputLine() throws Exception
+ {
+ super.testConsumeOutputLine();
+ assertEquals( getLine() + LINE_SEPARATOR, writer.toString() );
+ }
+
+ public void testTestSetCompleted()
+ {
+ super.testTestSetCompleted();
+ assertEquals( "", writer.toString() );
+ }
+
+ public void testTestSetStarting()
+ {
+ super.testTestSetStarting();
+ assertEquals( "", writer.toString() );
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/PrintWriterOutputConsumerTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/StandardOutputConsumerTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/StandardOutputConsumerTest.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/StandardOutputConsumerTest.java (added)
+++ maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/StandardOutputConsumerTest.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,36 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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 StandardOutputConsumer}
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class StandardOutputConsumerTest
+ extends AbstractOutputConsumerTest
+{
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ setOutputConsumer( new StandardOutputConsumer() );
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/StandardOutputConsumerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/StandardOutputConsumerTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxyTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxyTest.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxyTest.java (added)
+++ maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxyTest.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,42 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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 SupressFooterOutputConsumerProxy}
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class SupressFooterOutputConsumerProxyTest
+ extends OutputConsumerProxyTest
+{
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ setOutputConsumer( new SupressFooterOutputConsumerProxy( (OutputConsumer) getOutputConsumerMock().proxy() ) );
+ }
+
+ public void testConsumeFooterLine()
+ {
+ getOutputConsumer().consumeFooterLine( getLine() );
+ getOutputConsumerMock().verify();
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxyTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressFooterOutputConsumerProxyTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxyTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxyTest.java?rev=415349&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxyTest.java (added)
+++ maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxyTest.java Mon Jun 19 08:00:44 2006
@@ -0,0 +1,42 @@
+package org.apache.maven.surefire.booter.output;
+
+/*
+ * 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 SupressHeaderOutputConsumerProxy}
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class SupressHeaderOutputConsumerProxyTest
+ extends OutputConsumerProxyTest
+{
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ setOutputConsumer( new SupressHeaderOutputConsumerProxy( (OutputConsumer) getOutputConsumerMock().proxy() ) );
+ }
+
+ public void testConsumeHeaderLine()
+ {
+ getOutputConsumer().consumeHeaderLine( getLine() );
+ getOutputConsumerMock().verify();
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxyTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/SupressHeaderOutputConsumerProxyTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Re: svn commit: r415349 - in /maven/surefire/trunk/surefire-booter:
./ src/main/java/org/apache/maven/surefire/booter/ src/main/java/org/apache/maven/surefire/booter/output/
src/test/ src/test/java/ src/test/java/org/ src/test/java/org/apache/ src/test/jav...
Posted by Brett Porter <br...@apache.org>.
Carlos?
I remember asking this myself and I'm pretty sure there was an answer...
I just don't remember what it is :)
- Brett
On 20/06/2006 1:07 AM, Trygve Laugstøl wrote:
> carlos@apache.org wrote:
>> Author: carlos
>> Date: Mon Jun 19 08:00:44 2006
>> New Revision: 415349
>>
>> URL: http://svn.apache.org/viewvc?rev=415349&view=rev
>> Log:
>> [MSUREFIRE-136] Added option to redirect test output to a file,
>> redirectTestOutputToFile
>
> How is this different that useFile=true? Should this new stuff use the
> same configuration property perhaps?
>
> --
> Trygve
>
--
Brett Porter <br...@apache.org>
Apache Maven - http://maven.apache.org/
Better Builds with Maven - http://library.mergere.com/
Re: svn commit: r415349 - in /maven/surefire/trunk/surefire-booter:
./ src/main/java/org/apache/maven/surefire/booter/ src/main/java/org/apache/maven/surefire/booter/output/
src/test/ src/test/java/ src/test/java/org/ src/test/java/org/apache/ src/test/jav...
Posted by Trygve Laugstøl <tr...@apache.org>.
carlos@apache.org wrote:
> Author: carlos
> Date: Mon Jun 19 08:00:44 2006
> New Revision: 415349
>
> URL: http://svn.apache.org/viewvc?rev=415349&view=rev
> Log:
> [MSUREFIRE-136] Added option to redirect test output to a file, redirectTestOutputToFile
How is this different that useFile=true? Should this new stuff use the
same configuration property perhaps?
--
Trygve