Author: krosenvold
Date: Wed Feb 9 20:36:31 2011
New Revision: 1069073
URL: http://svn.apache.org/viewvc?rev=1069073&view=rev
Log:
[SUREFIRE-695] Avoid duplicate code in SurefirePlugin and IntegrationTestMojo
Patch by Stephan Birkner, applied unchanged.
Modified:
maven/surefire/trunk/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
Modified:
maven/surefire/trunk/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
URL:
http://svn.apache.org/viewvc/maven/surefire/trunk/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java?rev=1069073&r1=1069072&r2=1069073&view=diff
==============================================================================
---
maven/surefire/trunk/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
(original)
+++
maven/surefire/trunk/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
Wed Feb 9 20:36:31 2011
@@ -28,7 +28,6 @@ import org.apache.maven.plugin.MojoExecu
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.surefire.AbstractSurefireMojo;
import org.apache.maven.plugin.surefire.ProviderInfo;
-import org.apache.maven.plugin.surefire.SurefireExecutionParameters;
import org.apache.maven.plugin.surefire.booterclient.ChecksumCalculator;
import org.apache.maven.plugin.surefire.booterclient.ForkConfiguration;
import org.apache.maven.plugin.surefire.booterclient.ForkStarter;
@@ -69,7 +68,6 @@ import java.util.Properties;
*/
public class IntegrationTestMojo
extends AbstractSurefireMojo
- implements SurefireExecutionParameters
{
/**
@@ -538,10 +536,6 @@ public class IntegrationTestMojo
*/
private ArtifactMetadataSource metadataSource;
- private static final String BRIEF_REPORT_FORMAT = "brief";
-
- private static final String PLAIN_REPORT_FORMAT = "plain";
-
private Properties originalSystemProperties;
/**
@@ -638,124 +632,96 @@ public class IntegrationTestMojo
private ToolchainManager toolchainManager;
- public void execute()
+ public void executeAfterPreconditionsChecked()
throws MojoExecutionException, MojoFailureException
{
- if ( verifyParameters() )
+ final List providers = initialize();
+ String exceptionMessage = null;
+ FailsafeSummary result = new FailsafeSummary();
+
+ ForkConfiguration forkConfiguration = null;
+ for ( Iterator iter = providers.iterator(); iter.hasNext(); )
{
- if ( hasExecutedBefore() )
+ ProviderInfo provider = (ProviderInfo) iter.next();
+ forkConfiguration = getForkConfiguration();
+ ClassLoaderConfiguration classLoaderConfiguration =
getClassLoaderConfiguration( forkConfiguration );
+ ForkStarter forkStarter = createForkStarter( provider,
forkConfiguration, classLoaderConfiguration );
+ try
{
- return;
+ result.setResult( forkStarter.run() );
}
- logReportsDirectory();
-
- final List providers = initialize();
- String exceptionMessage = null;
- FailsafeSummary result = new FailsafeSummary();
-
- ForkConfiguration forkConfiguration = null;
- for ( Iterator iter = providers.iterator(); iter.hasNext(); )
+ catch ( SurefireBooterForkException e )
{
- ProviderInfo provider = (ProviderInfo) iter.next();
- forkConfiguration = getForkConfiguration();
- ClassLoaderConfiguration classLoaderConfiguration =
getClassLoaderConfiguration( forkConfiguration );
- ForkStarter forkStarter = createForkStarter( provider,
forkConfiguration, classLoaderConfiguration );
- try
+ if ( exceptionMessage == null )
{
- result.setResult( forkStarter.run() );
+ exceptionMessage = e.getMessage();
}
- catch ( SurefireBooterForkException e )
- {
- if ( exceptionMessage == null )
- {
- exceptionMessage = e.getMessage();
- }
- }
- catch ( SurefireExecutionException e )
- {
- if ( exceptionMessage == null )
- {
- exceptionMessage = e.getMessage();
- }
- }
- }
-
- if ( exceptionMessage != null )
- {
- // Fail no matter what as long as any provider failed
- result.setResult( ProviderConfiguration.TESTS_FAILED_EXIT_CODE
);
- result.setException( exceptionMessage );
- }
-
- if ( getOriginalSystemProperties() != null && forkConfiguration !=
null && !forkConfiguration.isForking() )
- {
- // restore system properties, only makes sense when not
forking..
- System.setProperties( getOriginalSystemProperties() );
}
-
- if ( !getSummaryFile().getParentFile().isDirectory() )
+ catch ( SurefireExecutionException e )
{
- getSummaryFile().getParentFile().mkdirs();
- }
-
- try
- {
- String encoding;
- if ( StringUtils.isEmpty( this.encoding ) )
+ if ( exceptionMessage == null )
{
- getLog().warn(
- "File encoding has not been set, using platform
encoding " + ReaderFactory.FILE_ENCODING
- + ", i.e. build is platform dependent!" );
- encoding = ReaderFactory.FILE_ENCODING;
+ exceptionMessage = e.getMessage();
}
- else
- {
- encoding = this.encoding;
- }
-
- FileOutputStream fileOutputStream = new FileOutputStream(
getSummaryFile() );
- BufferedOutputStream bufferedOutputStream = new
BufferedOutputStream( fileOutputStream );
- Writer writer = new OutputStreamWriter( bufferedOutputStream,
encoding );
- FailsafeSummaryXpp3Writer xpp3Writer = new
FailsafeSummaryXpp3Writer();
- xpp3Writer.write( writer, result );
- writer.close();
- bufferedOutputStream.close();
- fileOutputStream.close();
- }
- catch ( IOException e )
- {
- throw new MojoExecutionException( e.getMessage(), e );
}
}
- }
-
- protected boolean verifyParameters()
- throws MojoFailureException
- {
- if ( isSkip() || isSkipTests() || isSkipITs() || isSkipExec() )
+ if ( exceptionMessage != null )
{
- getLog().info( "Tests are skipped." );
- return false;
+ // Fail no matter what as long as any provider failed
+ result.setResult( ProviderConfiguration.TESTS_FAILED_EXIT_CODE );
+ result.setException( exceptionMessage );
}
- if ( !getTestClassesDirectory().exists() )
+ if ( getOriginalSystemProperties() != null && forkConfiguration !=
null && !forkConfiguration.isForking() )
{
- if ( getFailIfNoTests() != null &&
getFailIfNoTests().booleanValue() )
- {
- throw new MojoFailureException( "No tests to run!" );
- }
- getLog().info( "No tests to run." );
- return false;
+ // restore system properties, only makes sense when not forking..
+ System.setProperties( getOriginalSystemProperties() );
}
- ensureWorkingDirectoryExists();
+ writeSummary(result);
+ }
- ensureParallelRunningCompatibility();
+ private void writeSummary(FailsafeSummary summary)
+ throws MojoExecutionException {
+ File summaryFile = getSummaryFile();
+ if ( !summaryFile.getParentFile().isDirectory() )
+ {
+ summaryFile.getParentFile().mkdirs();
+ }
+ try
+ {
+ String encoding;
+ if ( StringUtils.isEmpty( this.encoding ) )
+ {
+ getLog().warn(
+ "File encoding has not been set, using platform encoding "
+ ReaderFactory.FILE_ENCODING
+ + ", i.e. build is platform dependent!" );
+ encoding = ReaderFactory.FILE_ENCODING;
+ }
+ else
+ {
+ encoding = this.encoding;
+ }
- warnIfUselessUseSystemClassLoaderParameter();
+ FileOutputStream fileOutputStream = new FileOutputStream(
summaryFile );
+ BufferedOutputStream bufferedOutputStream = new
BufferedOutputStream( fileOutputStream );
+ Writer writer = new OutputStreamWriter( bufferedOutputStream,
encoding );
+ FailsafeSummaryXpp3Writer xpp3Writer = new
FailsafeSummaryXpp3Writer();
+ xpp3Writer.write( writer, summary );
+ writer.close();
+ bufferedOutputStream.close();
+ fileOutputStream.close();
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ }
- return true;
+ protected boolean isSkipExecution()
+ {
+ return isSkip() || isSkipTests() || isSkipITs() || isSkipExec();
}
protected String getPluginName()
Modified:
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
URL:
http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java?rev=1069073&r1=1069072&r2=1069073&view=diff
==============================================================================
---
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
(original)
+++
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
Wed Feb 9 20:36:31 2011
@@ -92,8 +92,48 @@ public abstract class AbstractSurefireMo
private SurefireDependencyResolver dependencyResolver;
- protected abstract boolean verifyParameters()
- throws MojoFailureException;
+ public void execute()
+ throws MojoExecutionException, MojoFailureException
+ {
+
+ if ( verifyParameters() && !hasExecutedBefore() )
+ {
+ logReportsDirectory();
+ executeAfterPreconditionsChecked();
+ }
+ }
+
+ protected boolean verifyParameters()
+ throws MojoFailureException
+ {
+ if ( isSkipExecution() )
+ {
+ getLog().info( "Tests are skipped." );
+ return false;
+ }
+
+ if ( !getTestClassesDirectory().exists() )
+ {
+ if ( Boolean.TRUE.equals(getFailIfNoTests()) )
+ {
+ throw new MojoFailureException( "No tests to run!" );
+ }
+ getLog().info( "No tests to run." );
+ }
+ else
+ {
+ ensureWorkingDirectoryExists();
+ ensureParallelRunningCompatibility();
+ warnIfUselessUseSystemClassLoaderParameter();
+ }
+
+ return true;
+ }
+
+ protected abstract boolean isSkipExecution();
+
+ protected abstract void executeAfterPreconditionsChecked()
+ throws MojoExecutionException, MojoFailureException;
private Artifact surefireArtifact;
Modified:
maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
URL:
http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java?rev=1069073&r1=1069072&r2=1069073&view=diff
==============================================================================
---
maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
(original)
+++
maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
Wed Feb 9 20:36:31 2011
@@ -55,7 +55,7 @@ import java.util.Properties;
*/
public class SurefirePlugin
extends AbstractSurefireMojo
- implements SurefireExecutionParameters, SurefireReportParameters
+ implements SurefireReportParameters
{
/**
@@ -592,83 +592,55 @@ public class SurefirePlugin
*/
private ToolchainManager toolchainManager;
- public void execute()
+ public void executeAfterPreconditionsChecked()
throws MojoExecutionException, MojoFailureException
{
- if ( verifyParameters() )
+ final List providers = initialize();
+ Exception exception = null;
+ ForkConfiguration forkConfiguration = null;
+ int result = 0;
+ for ( Iterator iter = providers.iterator(); iter.hasNext(); )
{
- if ( hasExecutedBefore() )
- {
- return;
- }
- logReportsDirectory();
+ ProviderInfo provider = (ProviderInfo) iter.next();
+ forkConfiguration = getForkConfiguration();
+ ClassLoaderConfiguration classLoaderConfiguration =
getClassLoaderConfiguration( forkConfiguration );
+ ForkStarter forkStarter = createForkStarter( provider,
forkConfiguration, classLoaderConfiguration );
- final List providers = initialize();
- Exception exception = null;
- ForkConfiguration forkConfiguration = null;
- int result = 0;
- for ( Iterator iter = providers.iterator(); iter.hasNext(); )
+ try
{
- ProviderInfo provider = (ProviderInfo) iter.next();
- forkConfiguration = getForkConfiguration();
- ClassLoaderConfiguration classLoaderConfiguration =
getClassLoaderConfiguration( forkConfiguration );
- ForkStarter forkStarter = createForkStarter( provider,
forkConfiguration, classLoaderConfiguration );
-
- try
- {
- result = forkStarter.run();
- }
- catch ( SurefireBooterForkException e )
- {
- exception = e;
- }
- catch ( SurefireExecutionException e )
- {
- exception = e;
- }
+ result = forkStarter.run();
}
-
- if ( exception != null )
+ catch ( SurefireBooterForkException e )
{
- throw new MojoExecutionException( exception.getMessage(),
exception );
+ exception = e;
}
-
- if ( getOriginalSystemProperties() != null && forkConfiguration !=
null && !forkConfiguration.isForking() )
+ catch ( SurefireExecutionException e )
{
- // restore system properties, only makes sense when not
forking..
- System.setProperties( getOriginalSystemProperties() );
+ exception = e;
}
-
- SurefireHelper.reportExecution( this, result, getLog() );
}
- }
- protected boolean verifyParameters()
- throws MojoFailureException
- {
- if ( isSkip() || isSkipTests() || isSkipExec() )
+ if ( exception != null )
{
- getLog().info( "Tests are skipped." );
- return false;
+ throw new MojoExecutionException( exception.getMessage(),
exception );
}
- if ( !getTestClassesDirectory().exists() )
+ if ( getOriginalSystemProperties() != null && forkConfiguration !=
null && !forkConfiguration.isForking() )
{
- if ( getFailIfNoTests() != null &&
getFailIfNoTests().booleanValue() )
- {
- throw new MojoFailureException( "No tests to run!" );
- }
- getLog().info( "No tests to run." );
- return true;
+ // restore system properties, only makes sense when not forking..
+ System.setProperties( getOriginalSystemProperties() );
}
- ensureWorkingDirectoryExists();
-
- ensureParallelRunningCompatibility();
+ writeSummary(result);
+ }
- warnIfUselessUseSystemClassLoaderParameter();
+ private void writeSummary(int result) throws MojoFailureException {
+ SurefireHelper.reportExecution( this, result, getLog() );
+ }
- return true;
+ protected boolean isSkipExecution()
+ {
+ return isSkip() || isSkipTests() || isSkipExec();
}
protected String getPluginName()