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 kr...@apache.org on 2010/12/06 23:28:02 UTC
svn commit: r1042818 - in /maven/surefire/trunk:
maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/
maven-failsafe-plugin/src/main/mdo/
maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/
maven-surefire-common/src/m...
Author: krosenvold
Date: Mon Dec 6 22:28:01 2010
New Revision: 1042818
URL: http://svn.apache.org/viewvc?rev=1042818&view=rev
Log:
o Refactoring only; Separated BooterConfiguration and ProviderConfiguration and renamed both.
Added:
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/StartupConfiguration.java
- copied, changed from r1042451, maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.java
Removed:
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterConfiguration.java
Modified:
maven/surefire/trunk/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
maven/surefire/trunk/maven-failsafe-plugin/src/main/mdo/failsafe-summary.mdo
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.java
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/BooterSerializer.java
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerTest.java
maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterConstants.java
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterDeserializer.java
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.java
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireStarter.java
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SystemPropertyManager.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=1042818&r1=1042817&r2=1042818&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 Mon Dec 6 22:28:01 2010
@@ -31,8 +31,7 @@ import org.apache.maven.plugin.surefire.
import org.apache.maven.plugin.surefire.booterclient.ForkConfiguration;
import org.apache.maven.plugin.surefire.booterclient.ForkStarter;
import org.apache.maven.project.MavenProject;
-import org.apache.maven.surefire.booter.BooterConfiguration;
-import org.apache.maven.surefire.booter.Classpath;
+import org.apache.maven.surefire.booter.ProviderConfiguration;
import org.apache.maven.surefire.booter.SurefireBooterForkException;
import org.apache.maven.surefire.booter.SurefireExecutionException;
import org.apache.maven.surefire.failsafe.model.FailsafeSummary;
@@ -601,30 +600,25 @@ public class IntegrationTestMojo
public void execute()
throws MojoExecutionException, MojoFailureException
{
- final AbstractSurefireMojo.WellKnownProvider provider = initialize();
if ( verifyParameters() )
{
- final Classpath bootClasspathConfiguration = new Classpath();
- ForkConfiguration forkConfiguration = getForkConfiguration( bootClasspathConfiguration );
+ logReportsDirectory();
- BooterConfiguration booterConfiguration = createBooterConfiguration( forkConfiguration, provider );
- ForkStarter booter = new ForkStarter( booterConfiguration, reportsDirectory, forkConfiguration,
- getForkedProcessTimeoutInSeconds() );
-
- getLog().info(
- StringUtils.capitalizeFirstLetter( getPluginName() ) + " report directory: " + getReportsDirectory() );
+ final AbstractSurefireMojo.WellKnownProvider provider = initialize();
+ ForkConfiguration forkConfiguration = getForkConfiguration();
+ ForkStarter forkStarter = createForkStarter( provider, forkConfiguration );
FailsafeSummary result = new FailsafeSummary();
try
{
- result.setResult( booter.run() );
+ result.setResult( forkStarter.run() );
}
catch ( SurefireBooterForkException e )
{
// Don't stop processing when timeout or other exception occures
// Otherwise, the following life cycles (e.g. post-integration-test)
// won't be executed
- result.setResult( BooterConfiguration.TESTS_FAILED_EXIT_CODE );
+ result.setResult( ProviderConfiguration.TESTS_FAILED_EXIT_CODE );
result.setException( e.getMessage() );
}
catch ( SurefireExecutionException e )
@@ -632,7 +626,7 @@ public class IntegrationTestMojo
// Don't stop processing when timeout or other exception occures
// Otherwise, the following life cycles (e.g. post-integration-test)
// won't be executed
- result.setResult( BooterConfiguration.TESTS_FAILED_EXIT_CODE );
+ result.setResult( ProviderConfiguration.TESTS_FAILED_EXIT_CODE );
result.setException( e.getMessage() );
}
Modified: maven/surefire/trunk/maven-failsafe-plugin/src/main/mdo/failsafe-summary.mdo
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-failsafe-plugin/src/main/mdo/failsafe-summary.mdo?rev=1042818&r1=1042817&r2=1042818&view=diff
==============================================================================
--- maven/surefire/trunk/maven-failsafe-plugin/src/main/mdo/failsafe-summary.mdo (original)
+++ maven/surefire/trunk/maven-failsafe-plugin/src/main/mdo/failsafe-summary.mdo Mon Dec 6 22:28:01 2010
@@ -72,17 +72,17 @@ under the License.
{
switch ( this.result )
{
- case org.apache.maven.surefire.booter.BooterConfiguration.TESTS_SUCCEEDED_EXIT_CODE:
+ case org.apache.maven.surefire.booter.ProviderConfiguration.TESTS_SUCCEEDED_EXIT_CODE:
this.result = summary.result;
break;
- case org.apache.maven.surefire.booter.BooterConfiguration.NO_TESTS_EXIT_CODE:
+ case org.apache.maven.surefire.booter.ProviderConfiguration.NO_TESTS_EXIT_CODE:
switch ( summary.result )
{
- case org.apache.maven.surefire.booter.BooterConfiguration.TESTS_SUCCEEDED_EXIT_CODE:
+ case org.apache.maven.surefire.booter.ProviderConfiguration.TESTS_SUCCEEDED_EXIT_CODE:
break;
- case org.apache.maven.surefire.booter.BooterConfiguration.NO_TESTS_EXIT_CODE:
+ case org.apache.maven.surefire.booter.ProviderConfiguration.NO_TESTS_EXIT_CODE:
break;
- case org.apache.maven.surefire.booter.BooterConfiguration.TESTS_FAILED_EXIT_CODE:
+ case org.apache.maven.surefire.booter.ProviderConfiguration.TESTS_FAILED_EXIT_CODE:
this.result = summary.result;
break;
default:
@@ -90,14 +90,14 @@ under the License.
break;
}
break;
- case org.apache.maven.surefire.booter.BooterConfiguration.TESTS_FAILED_EXIT_CODE:
+ case org.apache.maven.surefire.booter.ProviderConfiguration.TESTS_FAILED_EXIT_CODE:
switch ( summary.result )
{
- case org.apache.maven.surefire.booter.BooterConfiguration.TESTS_SUCCEEDED_EXIT_CODE:
+ case org.apache.maven.surefire.booter.ProviderConfiguration.TESTS_SUCCEEDED_EXIT_CODE:
break;
- case org.apache.maven.surefire.booter.BooterConfiguration.NO_TESTS_EXIT_CODE:
+ case org.apache.maven.surefire.booter.ProviderConfiguration.NO_TESTS_EXIT_CODE:
break;
- case org.apache.maven.surefire.booter.BooterConfiguration.TESTS_FAILED_EXIT_CODE:
+ case org.apache.maven.surefire.booter.ProviderConfiguration.TESTS_FAILED_EXIT_CODE:
break;
default:
this.result = summary.result;
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=1042818&r1=1042817&r2=1042818&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 Mon Dec 6 22:28:01 2010
@@ -34,12 +34,13 @@ import org.apache.maven.plugin.AbstractM
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.surefire.booterclient.ForkConfiguration;
+import org.apache.maven.plugin.surefire.booterclient.ForkStarter;
import org.apache.maven.shared.artifact.filter.PatternIncludesArtifactFilter;
-import org.apache.maven.surefire.booter.BooterConfiguration;
import org.apache.maven.surefire.booter.Classpath;
import org.apache.maven.surefire.booter.ClasspathConfiguration;
import org.apache.maven.surefire.booter.ProviderConfiguration;
import org.apache.maven.surefire.booter.ProviderDetector;
+import org.apache.maven.surefire.booter.StartupConfiguration;
import org.apache.maven.surefire.providerapi.SurefireProvider;
import org.apache.maven.surefire.report.BriefConsoleReporter;
import org.apache.maven.surefire.report.BriefFileReporter;
@@ -141,6 +142,13 @@ public abstract class AbstractSurefireMo
}
}
+ protected void logReportsDirectory()
+ {
+ getLog().info(
+ StringUtils.capitalizeFirstLetter( getPluginName() ) + " report directory: " + getReportsDirectory() );
+ }
+
+
private String getManuallyConfiguredProviderName()
{
try
@@ -153,7 +161,8 @@ public abstract class AbstractSurefireMo
}
if ( objects.size() > 1 )
{
- throw new IllegalArgumentException( "Surefire currently only supports on manually configured provider" );
+ throw new IllegalArgumentException(
+ "Surefire currently only supports on manually configured provider" );
}
return (String) objects.iterator().next();
@@ -268,12 +277,11 @@ public abstract class AbstractSurefireMo
return ForkConfiguration.FORK_NEVER.equals( getForkMode() );
}
- protected BooterConfiguration createBooterConfiguration( ForkConfiguration forkConfiguration,
- WellKnownProvider provider )
+ protected ProviderConfiguration createProviderConfiguration( ForkConfiguration forkConfiguration,
+ WellKnownProvider provider,
+ StartupConfiguration startupConfiguration )
throws MojoExecutionException, MojoFailureException
{
- final ClasspathConfiguration classpathConfiguration =
- new ClasspathConfiguration( isEnableAssertions(), isChildDelegation() );
List reports = getReporters( forkConfiguration.isForking() );
ReporterConfiguration reporterConfiguration =
@@ -289,7 +297,6 @@ public abstract class AbstractSurefireMo
Artifact junitArtifact;
Artifact testNgArtifact;
- String providerName;
try
{
addArtifact( forkConfiguration.getBootClasspath(), surefireArtifact );
@@ -300,8 +307,7 @@ public abstract class AbstractSurefireMo
provider.addProviderProperties();
provider.addProviderArtifactToBootClasspath( forkConfiguration.getBootClasspath() );
- provider.addProviderArtifactToSurefireClasspath( classpathConfiguration );
- providerName = provider.getProviderName();
+ provider.addProviderArtifactToSurefireClasspath( startupConfiguration.getClasspathConfiguration() );
}
catch ( ArtifactNotFoundException e )
{
@@ -357,35 +363,10 @@ public abstract class AbstractSurefireMo
{
providerProperties = new Properties();
}
- ProviderConfiguration surefireStarterConfiguration =
- new ProviderConfiguration( providerName, classpathConfiguration,
- forkConfiguration.getClassLoaderConfiguration(), forkConfiguration.isForking(),
- false, isRedirectTestOutputToFile() );
-
- BooterConfiguration booterConfiguration =
- new BooterConfiguration( surefireStarterConfiguration, reports, directoryScannerParameters, failIfNoTests,
- reporterConfiguration, testNg, testSuiteDefinition, providerProperties, null );
- List classpathElements;
- try
- {
- classpathElements = generateTestClasspath();
- }
- catch ( DependencyResolutionRequiredException e )
- {
- throw new MojoExecutionException( "Unable to generate test classpath: " + e, e );
- }
-
- getLog().debug( "Test Classpath :" );
-
- for ( Iterator i = classpathElements.iterator(); i.hasNext(); )
- {
- String classpathElement = (String) i.next();
-
- getLog().debug( " " + classpathElement );
-
- classpathConfiguration.addClasspathUrl( classpathElement );
- }
+ ProviderConfiguration providerConfiguration1 =
+ new ProviderConfiguration( reports, directoryScannerParameters, failIfNoTests, reporterConfiguration,
+ testNg, testSuiteDefinition, providerProperties, null );
Toolchain tc = getToolchain();
@@ -406,9 +387,70 @@ public abstract class AbstractSurefireMo
}
}
- return booterConfiguration;
+ return providerConfiguration1;
+ }
+
+ protected StartupConfiguration createStartupConfiguration( ForkConfiguration forkConfiguration,
+ WellKnownProvider provider )
+ throws MojoExecutionException, MojoFailureException
+ {
+ final ClasspathConfiguration classpathConfiguration =
+ new ClasspathConfiguration( isEnableAssertions(), isChildDelegation() );
+
+ surefireArtifact = (Artifact) getPluginArtifactMap().get( "org.apache.maven.surefire:surefire-booter" );
+ if ( surefireArtifact == null )
+ {
+ throw new MojoExecutionException( "Unable to locate surefire-booter in the list of plugin artifacts" );
+ }
+
+ surefireArtifact.isSnapshot(); // MNG-2961: before Maven 2.0.8, fixes getBaseVersion to be -SNAPSHOT if needed
+
+ String providerName;
+ try
+ {
+ addArtifact( forkConfiguration.getBootClasspath(), surefireArtifact );
+
+ provider.addProviderProperties();
+ provider.addProviderArtifactToBootClasspath( forkConfiguration.getBootClasspath() );
+ provider.addProviderArtifactToSurefireClasspath( classpathConfiguration );
+ providerName = provider.getProviderName();
+ }
+ catch ( ArtifactNotFoundException e )
+ {
+ throw new MojoExecutionException(
+ "Unable to locate required surefire provider dependency: " + e.getMessage(), e );
+ }
+ catch ( ArtifactResolutionException e )
+ {
+ throw new MojoExecutionException( "Error to resolving surefire provider dependency: " + e.getMessage(), e );
+ }
+
+ List classpathElements;
+ try
+ {
+ classpathElements = generateTestClasspath();
+ }
+ catch ( DependencyResolutionRequiredException e )
+ {
+ throw new MojoExecutionException( "Unable to generate test classpath: " + e, e );
+ }
+
+ getLog().debug( "Test Classpath :" );
+
+ for ( Iterator i = classpathElements.iterator(); i.hasNext(); )
+ {
+ String classpathElement = (String) i.next();
+
+ getLog().debug( " " + classpathElement );
+
+ classpathConfiguration.addClasspathUrl( classpathElement );
+ }
+ return new StartupConfiguration( providerName, classpathConfiguration,
+ forkConfiguration.getClassLoaderConfiguration(), forkConfiguration.isForking(),
+ false, isRedirectTestOutputToFile() );
}
+
private boolean isSpecificTestSpecified()
{
return getTest() != null;
@@ -517,8 +559,20 @@ public abstract class AbstractSurefireMo
return junitArtifact;
}
- protected ForkConfiguration getForkConfiguration( Classpath bootClasspathConfiguration )
+ protected ForkStarter createForkStarter( WellKnownProvider provider, ForkConfiguration forkConfiguration )
+ throws MojoExecutionException, MojoFailureException
{
+ StartupConfiguration startupConfiguration = createStartupConfiguration( forkConfiguration, provider );
+ ProviderConfiguration providerConfiguration =
+ createProviderConfiguration( forkConfiguration, provider, startupConfiguration );
+ return new ForkStarter( providerConfiguration, startupConfiguration, getReportsDirectory(), forkConfiguration,
+ getForkedProcessTimeoutInSeconds() );
+ }
+
+ protected ForkConfiguration getForkConfiguration()
+ {
+ final Classpath bootClasspathConfiguration = new Classpath();
+
ForkConfiguration fork = new ForkConfiguration( bootClasspathConfiguration );
fork.setForkMode( getForkMode() );
Modified: maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.java?rev=1042818&r1=1042817&r2=1042818&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.java (original)
+++ maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.java Mon Dec 6 22:28:01 2010
@@ -21,7 +21,7 @@ package org.apache.maven.plugin.surefire
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.surefire.booter.BooterConfiguration;
+import org.apache.maven.surefire.booter.ProviderConfiguration;
/**
* Helper class for surefire plugins
@@ -47,7 +47,7 @@ public final class SurefireHelper
String msg;
- if ( result == BooterConfiguration.NO_TESTS_EXIT_CODE )
+ if ( result == ProviderConfiguration.NO_TESTS_EXIT_CODE )
{
if ( ( reportParameters.getFailIfNoTests() == null ) || !reportParameters.getFailIfNoTests().booleanValue() )
{
Modified: maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/BooterSerializer.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/BooterSerializer.java?rev=1042818&r1=1042817&r2=1042818&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/BooterSerializer.java (original)
+++ maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/BooterSerializer.java Mon Dec 6 22:28:01 2010
@@ -18,10 +18,10 @@ package org.apache.maven.plugin.surefire
* under the License.
*/
-import org.apache.maven.surefire.booter.BooterConfiguration;
+import org.apache.maven.surefire.booter.ProviderConfiguration;
import org.apache.maven.surefire.booter.BooterConstants;
import org.apache.maven.surefire.booter.ClassLoaderConfiguration;
-import org.apache.maven.surefire.booter.ProviderConfiguration;
+import org.apache.maven.surefire.booter.StartupConfiguration;
import org.apache.maven.surefire.booter.SystemPropertyManager;
import org.apache.maven.surefire.report.ReporterConfiguration;
import org.apache.maven.surefire.testset.DirectoryScannerParameters;
@@ -53,7 +53,6 @@ import java.util.Properties;
* @version $Id$
*/
public class BooterSerializer
- implements BooterConstants
{
private final ForkConfiguration forkConfiguration;
@@ -63,18 +62,18 @@ public class BooterSerializer
}
- public File serialize( Properties properties, BooterConfiguration booterConfiguration,
- ForkConfiguration forkConfiguration, Object testSet )
+ public File serialize( Properties properties, ProviderConfiguration booterConfiguration, StartupConfiguration providerConfiguration,
+ Object testSet )
throws IOException
{
- setForkProperties( properties, booterConfiguration, testSet );
+ setForkProperties( properties, booterConfiguration, providerConfiguration, testSet );
SystemPropertyManager systemPropertyManager = new SystemPropertyManager();
return systemPropertyManager.writePropertiesFile( properties, forkConfiguration.getTempDirectory(), "surefire",
forkConfiguration.isDebug() );
}
- public void setForkProperties( Properties properties, BooterConfiguration booterConfiguration, Object testSet )
+ private void setForkProperties(Properties properties, ProviderConfiguration booterConfiguration, StartupConfiguration providerConfiguration, Object testSet)
{
if ( properties == null )
{
@@ -82,25 +81,23 @@ public class BooterSerializer
}
addList( booterConfiguration.getReports(), properties, BooterConstants.REPORT_PROPERTY_PREFIX );
List params = new ArrayList();
- params.add( new Object[]{ DIRSCANNER_OPTIONS, booterConfiguration.getDirScannerParamsArray() } );
+ params.add( new Object[]{ BooterConstants.DIRSCANNER_OPTIONS, booterConfiguration.getDirScannerParamsArray() } );
addPropertiesForTypeHolder( params, properties, BooterConstants.DIRSCANNER_PROPERTY_PREFIX );
- final ProviderConfiguration surefireStarterConfiguration =
- booterConfiguration.getSurefireStarterConfiguration();
- surefireStarterConfiguration.getClasspathConfiguration().setForkProperties( properties );
+ providerConfiguration.getClasspathConfiguration().setForkProperties( properties );
ReporterConfiguration reporterConfiguration = booterConfiguration.getReporterConfiguration();
- TestArtifactInfo testNg = booterConfiguration.getTestNg();
+ TestArtifactInfo testNg = booterConfiguration.getTestArtifact();
if ( testNg != null )
{
if ( testNg.getVersion() != null )
{
- properties.setProperty( BooterConstants.TESTNGVERSION, testNg.getVersion() );
+ properties.setProperty( BooterConstants.TESTARTIFACT_VERSION, testNg.getVersion() );
}
if ( testNg.getClassifier() != null )
{
- properties.setProperty( BooterConstants.TESTNG_CLASSIFIER, testNg.getClassifier() );
+ properties.setProperty( BooterConstants.TESTARTIFACT_CLASSIFIER, testNg.getClassifier() );
}
}
@@ -151,22 +148,9 @@ public class BooterSerializer
properties.setProperty( BooterConstants.FAILIFNOTESTS,
String.valueOf( booterConfiguration.isFailIfNoTests() ) );
properties.setProperty( BooterConstants.PROVIDER_CONFIGURATION,
- surefireStarterConfiguration.getProviderClassName() );
+ providerConfiguration.getProviderClassName() );
}
- public File writePropertiesFile( String name, Properties properties )
- throws IOException
- {
- File file = File.createTempFile( name, "tmp", forkConfiguration.getTempDirectory() );
- if ( !forkConfiguration.isDebug() )
- {
- file.deleteOnExit();
- }
-
- writePropertiesFile( file, name, properties );
-
- return file;
- }
void writePropertiesFile( File file, String name, Properties properties )
throws IOException
Modified: maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java?rev=1042818&r1=1042817&r2=1042818&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java (original)
+++ maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java Mon Dec 6 22:28:01 2010
@@ -24,10 +24,10 @@ import org.apache.maven.plugin.surefire.
import org.apache.maven.plugin.surefire.booterclient.output.StandardOutputConsumer;
import org.apache.maven.plugin.surefire.booterclient.output.SupressFooterOutputConsumerProxy;
import org.apache.maven.plugin.surefire.booterclient.output.SupressHeaderOutputConsumerProxy;
-import org.apache.maven.surefire.booter.BooterConfiguration;
import org.apache.maven.surefire.booter.Classpath;
import org.apache.maven.surefire.booter.ProviderConfiguration;
import org.apache.maven.surefire.booter.ProviderFactory;
+import org.apache.maven.surefire.booter.StartupConfiguration;
import org.apache.maven.surefire.booter.SurefireBooterForkException;
import org.apache.maven.surefire.booter.SurefireExecutionException;
import org.apache.maven.surefire.booter.SurefireStarter;
@@ -64,19 +64,22 @@ public class ForkStarter
{
private final int forkedProcessTimeoutInSeconds;
- private final BooterConfiguration booterConfiguration;
+ private final ProviderConfiguration providerConfiguration;
+
+ private final StartupConfiguration startupConfiguration;
private final ForkConfiguration forkConfiguration;
private final File reportsDirectory;
- public ForkStarter( BooterConfiguration booterConfiguration, File reportsDirectory,
- ForkConfiguration forkConfiguration, int forkedProcessTimeoutInSeconds )
+ public ForkStarter( ProviderConfiguration providerConfiguration, StartupConfiguration startupConfiguration,
+ File reportsDirectory, ForkConfiguration forkConfiguration, int forkedProcessTimeoutInSeconds )
{
this.forkConfiguration = forkConfiguration;
- this.booterConfiguration = booterConfiguration;
+ this.providerConfiguration = providerConfiguration;
this.reportsDirectory = reportsDirectory;
this.forkedProcessTimeoutInSeconds = forkedProcessTimeoutInSeconds;
+ this.startupConfiguration = startupConfiguration;
}
public int run()
@@ -87,9 +90,9 @@ public class ForkStarter
final String requestedForkMode = forkConfiguration.getForkMode();
if ( ForkConfiguration.FORK_NEVER.equals( requestedForkMode ) )
{
- SurefireStarter testVmBooter = new SurefireStarter( booterConfiguration );
- RunResult runResult = testVmBooter.runSuitesInProcess();
- result = testVmBooter.processRunCount( runResult );
+ SurefireStarter surefireStarter = new SurefireStarter( startupConfiguration, providerConfiguration );
+ RunResult runResult = surefireStarter.runSuitesInProcess();
+ result = surefireStarter.processRunCount( runResult );
}
else if ( ForkConfiguration.FORK_ONCE.equals( requestedForkMode ) )
{
@@ -109,7 +112,7 @@ public class ForkStarter
private int runSuitesForkOnce()
throws SurefireBooterForkException
{
- return fork( null, booterConfiguration.getProviderProperties(), true, true );
+ return fork( null, providerConfiguration.getProviderProperties(), true, true );
}
private int runSuitesForkPerTestSet()
@@ -119,13 +122,12 @@ public class ForkStarter
ClassLoader testsClassLoader;
ClassLoader surefireClassLoader;
- final ProviderConfiguration starterConfiguration = booterConfiguration.getSurefireStarterConfiguration();
try
{
- testsClassLoader = starterConfiguration.getClasspathConfiguration().createTestClassLoader( false );
+ testsClassLoader = startupConfiguration.getClasspathConfiguration().createTestClassLoader( false );
// TODO: assertions = true shouldn't be required if we had proper separation (see TestNG)
surefireClassLoader =
- starterConfiguration.getClasspathConfiguration().createSurefireClassLoader( testsClassLoader );
+ startupConfiguration.getClasspathConfiguration().createSurefireClassLoader( testsClassLoader );
}
catch ( SurefireExecutionException e )
{
@@ -133,7 +135,8 @@ public class ForkStarter
}
boolean showHeading = true;
- final ProviderFactory providerFactory = new ProviderFactory( booterConfiguration, surefireClassLoader );
+ final ProviderFactory providerFactory =
+ new ProviderFactory( startupConfiguration, providerConfiguration, surefireClassLoader );
SurefireProvider surefireProvider = providerFactory.createProvider( testsClassLoader );
Properties properties = new Properties();
@@ -165,7 +168,7 @@ public class ForkStarter
BooterSerializer booterSerializer = new BooterSerializer( forkConfiguration );
surefireProperties =
- booterSerializer.serialize( properties, booterConfiguration, forkConfiguration, testSet );
+ booterSerializer.serialize( properties, providerConfiguration, startupConfiguration, testSet );
if ( forkConfiguration.getSystemProperties() != null )
{
@@ -180,10 +183,9 @@ public class ForkStarter
throw new SurefireBooterForkException( "Error creating properties files for forking", e );
}
- final ProviderConfiguration starterConfiguration = booterConfiguration.getSurefireStarterConfiguration();
final Classpath bootClasspathConfiguration = forkConfiguration.getBootClasspath();
- final Classpath additionlClassPathUrls = starterConfiguration.useSystemClassLoader()
- ? starterConfiguration.getClasspathConfiguration().getTestClasspath()
+ final Classpath additionlClassPathUrls = startupConfiguration.useSystemClassLoader()
+ ? startupConfiguration.getClasspathConfiguration().getTestClasspath()
: null;
Classpath bootClasspath = bootClasspathConfiguration.append( additionlClassPathUrls );
@@ -197,14 +199,14 @@ public class ForkStarter
cli.createArg().setFile( systemProperties );
}
- final boolean willBeSharingConsumer = starterConfiguration.isRedirectTestOutputToFile();
+ final boolean willBeSharingConsumer = startupConfiguration.isRedirectTestOutputToFile();
ForkingStreamConsumer out =
- getForkingStreamConsumer( showHeading, showFooter, starterConfiguration.isRedirectTestOutputToFile() );
+ getForkingStreamConsumer( showHeading, showFooter, startupConfiguration.isRedirectTestOutputToFile() );
StreamConsumer err = willBeSharingConsumer
? out
- : getForkingStreamConsumer( showHeading, showFooter, starterConfiguration.isRedirectTestOutputToFile() );
+ : getForkingStreamConsumer( showHeading, showFooter, startupConfiguration.isRedirectTestOutputToFile() );
if ( forkConfiguration.isDebug() )
{
@@ -222,7 +224,7 @@ public class ForkStarter
throw new SurefireBooterForkException( "Error while executing forked tests.", e );
}
- if ( starterConfiguration.isRedirectTestOutputToFile() )
+ if ( startupConfiguration.isRedirectTestOutputToFile() )
{
// ensure the FileOutputConsumerProxy flushes/closes the output file
try
Modified: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerTest.java?rev=1042818&r1=1042817&r2=1042818&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerTest.java (original)
+++ maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerTest.java Mon Dec 6 22:28:01 2010
@@ -21,11 +21,12 @@ package org.apache.maven.plugin.surefire
import junit.framework.Assert;
import junit.framework.TestCase;
-import org.apache.maven.surefire.booter.BooterConfiguration;
import org.apache.maven.surefire.booter.BooterDeserializer;
import org.apache.maven.surefire.booter.ClassLoaderConfiguration;
import org.apache.maven.surefire.booter.ClasspathConfiguration;
import org.apache.maven.surefire.booter.ProviderConfiguration;
+import org.apache.maven.surefire.booter.StartupConfiguration;
+import org.apache.maven.surefire.booter.SystemPropertyManager;
import org.apache.maven.surefire.report.ReporterConfiguration;
import org.apache.maven.surefire.testset.DirectoryScannerParameters;
import org.apache.maven.surefire.testset.TestArtifactInfo;
@@ -72,9 +73,10 @@ public class BooterDeserializerTest
DirectoryScannerParameters directoryScannerParameters =
new DirectoryScannerParameters( aDir, includes, excludes, Boolean.TRUE );
ClassLoaderConfiguration forkConfiguration = getForkConfiguration();
- BooterConfiguration booterConfiguration =
+ final StartupConfiguration testProviderConfiguration = getTestProviderConfiguration( forkConfiguration );
+ ProviderConfiguration booterConfiguration =
getTestBooterConfiguration( forkConfiguration, directoryScannerParameters, new ArrayList() );
- BooterConfiguration read = saveAndReload( forkConfiguration, booterConfiguration );
+ ProviderConfiguration read = saveAndReload( booterConfiguration, testProviderConfiguration );
Assert.assertEquals( aDir, read.getBaseDir() );
Assert.assertEquals( includes.get( 0 ), read.getIncludes().get( 0 ) );
@@ -94,14 +96,15 @@ public class BooterDeserializerTest
reports.add( "cde" );
reports.add( "efg" );
- BooterConfiguration booterConfiguration =
+ ProviderConfiguration booterConfiguration =
getTestBooterConfiguration( forkConfiguration, directoryScannerParameters, reports );
booterConfiguration.getReports().add( "abc" );
booterConfiguration.getReports().add( "cde" );
booterConfiguration.getReports().add( "efg" );
- BooterConfiguration reloaded = saveAndReload( forkConfiguration, booterConfiguration );
+ final StartupConfiguration testProviderConfiguration = getTestProviderConfiguration( forkConfiguration );
+ ProviderConfiguration reloaded = saveAndReload( booterConfiguration, testProviderConfiguration );
Assert.assertEquals( "abc", reloaded.getReports().get( 0 ) );
Assert.assertEquals( "cde", reloaded.getReports().get( 1 ) );
@@ -111,16 +114,16 @@ public class BooterDeserializerTest
public void testTestNgArtifact()
throws IOException
{
- BooterConfiguration reloaded = getReloladedConfig();
+ ProviderConfiguration reloaded = getReloladedConfig();
- Assert.assertEquals( "5.0", reloaded.getTestNg().getVersion() );
- Assert.assertEquals( "ABC", reloaded.getTestNg().getClassifier() );
+ Assert.assertEquals( "5.0", reloaded.getTestArtifact().getVersion() );
+ Assert.assertEquals( "ABC", reloaded.getTestArtifact().getClassifier() );
}
public void testTestSuiteDefinition()
throws IOException
{
- BooterConfiguration reloaded = getReloladedConfig();
+ ProviderConfiguration reloaded = getReloladedConfig();
TestRequest testSuiteDefinition = reloaded.getTestSuiteDefinition();
File[] suiteXmlFiles = testSuiteDefinition.getSuiteXmlFiles();
@@ -137,28 +140,35 @@ public class BooterDeserializerTest
public void testProvider()
throws IOException
{
- BooterConfiguration reloaded = getReloladedConfig();
-
- assertEquals( "com.provider", reloaded.getSurefireStarterConfiguration().getProviderClassName() );
+ assertEquals( "com.provider", getReloadedProviderConfiguration().getProviderClassName() );
}
public void testFailIfNoTests()
throws IOException
{
- BooterConfiguration reloaded = getReloladedConfig();
+ ProviderConfiguration reloaded = getReloladedConfig();
assertTrue( reloaded.isFailIfNoTests().booleanValue() );
}
- private BooterConfiguration getReloladedConfig()
+ private ProviderConfiguration getReloladedConfig()
throws IOException
{
DirectoryScannerParameters directoryScannerParameters = getDirectoryScannerParameters();
ClassLoaderConfiguration forkConfiguration = getForkConfiguration();
- BooterConfiguration booterConfiguration =
+ ProviderConfiguration booterConfiguration =
getTestBooterConfiguration( forkConfiguration, directoryScannerParameters, new ArrayList() );
- return saveAndReload( forkConfiguration, booterConfiguration );
+ final StartupConfiguration testProviderConfiguration = getTestProviderConfiguration( forkConfiguration );
+ return saveAndReload( booterConfiguration, testProviderConfiguration );
+ }
+
+ private StartupConfiguration getReloadedProviderConfiguration()
+ throws IOException
+ {
+ DirectoryScannerParameters directoryScannerParameters = getDirectoryScannerParameters();
+ ClassLoaderConfiguration forkConfiguration = getForkConfiguration();
+ return getTestProviderConfiguration( forkConfiguration );
}
private DirectoryScannerParameters getDirectoryScannerParameters()
@@ -174,35 +184,44 @@ public class BooterDeserializerTest
return new DirectoryScannerParameters( aDir, includes, excludes, Boolean.TRUE );
}
- private BooterConfiguration saveAndReload( ClassLoaderConfiguration forkConfiguration,
- BooterConfiguration booterConfiguration )
+ private ProviderConfiguration saveAndReload( ProviderConfiguration booterConfiguration,
+ StartupConfiguration testProviderConfiguration )
throws IOException
{
- BooterSerializer booterSerializer = new BooterSerializer( ForkConfigurationTest.getForkConfiguration() );
+ final ForkConfiguration forkConfiguration = ForkConfigurationTest.getForkConfiguration();
+ BooterSerializer booterSerializer = new BooterSerializer( forkConfiguration );
Properties props = new Properties();
- booterSerializer.setForkProperties( props, booterConfiguration, aTest );
- final File propsTest = booterSerializer.writePropertiesFile( "propsTest", props );
- BooterDeserializer booterDeserializer = new BooterDeserializer();
- return booterDeserializer.deserialize( new FileInputStream( propsTest ) );
+ booterSerializer.serialize( props, booterConfiguration, testProviderConfiguration, aTest );
+ final File propsTest =
+ SystemPropertyManager.writePropertiesFile( props, forkConfiguration.getTempDirectory(), "propsTest", true );
+ BooterDeserializer booterDeserializer = new BooterDeserializer( new FileInputStream( propsTest ) );
+ return booterDeserializer.deserialize();
}
- private BooterConfiguration getTestBooterConfiguration( ClassLoaderConfiguration classLoaderConfiguration,
- DirectoryScannerParameters directoryScannerParameters,
- List reports )
+ private ProviderConfiguration getTestBooterConfiguration( ClassLoaderConfiguration classLoaderConfiguration,
+ DirectoryScannerParameters directoryScannerParameters,
+ List reports )
throws IOException
{
ClasspathConfiguration classpathConfiguration = new ClasspathConfiguration( true, true );
- ReporterConfiguration reporterConfiguration = new ReporterConfiguration(reports, new File( "." ), Boolean.TRUE );
+ ReporterConfiguration reporterConfiguration =
+ new ReporterConfiguration( reports, new File( "." ), Boolean.TRUE );
TestRequest testSuiteDefinition =
new TestRequest( getSuiteXmlFileStrings(), getTEstSourceDirectory(), aUserRequestedTest );
- ProviderConfiguration surefireStarterConfiguration =
- new ProviderConfiguration( "com.provider", classpathConfiguration, classLoaderConfiguration, false, false,
- false );
-
- return new BooterConfiguration( surefireStarterConfiguration, reports, directoryScannerParameters, true,
- reporterConfiguration, new TestArtifactInfo( "5.0", "ABC" ),
- testSuiteDefinition, new Properties(), aTest );
+ StartupConfiguration surefireStarterConfiguration = getTestProviderConfiguration( classLoaderConfiguration );
+
+ return new ProviderConfiguration( reports, directoryScannerParameters, true, reporterConfiguration,
+ new TestArtifactInfo( "5.0", "ABC" ), testSuiteDefinition, new Properties(),
+ aTest );
+ }
+
+ private StartupConfiguration getTestProviderConfiguration( ClassLoaderConfiguration classLoaderConfiguration )
+ {
+ ClasspathConfiguration classpathConfiguration = new ClasspathConfiguration( true, true );
+
+ return new StartupConfiguration( "com.provider", classpathConfiguration, classLoaderConfiguration, false, false,
+ false );
}
private File getTEstSourceDirectory()
@@ -214,8 +233,9 @@ public class BooterDeserializerTest
{
return new File[]{ new File( "A1" ), new File( "A2" ) };
}
+
private Object[] getSuiteXmlFileStrings()
{
- return new Object[]{ "A1" , "A2" };
+ return new Object[]{ "A1", "A2" };
}
}
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=1042818&r1=1042817&r2=1042818&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 Mon Dec 6 22:28:01 2010
@@ -29,8 +29,6 @@ import org.apache.maven.plugin.MojoFailu
import org.apache.maven.plugin.surefire.booterclient.ForkConfiguration;
import org.apache.maven.plugin.surefire.booterclient.ForkStarter;
import org.apache.maven.project.MavenProject;
-import org.apache.maven.surefire.booter.BooterConfiguration;
-import org.apache.maven.surefire.booter.Classpath;
import org.apache.maven.surefire.booter.SurefireBooterForkException;
import org.apache.maven.surefire.booter.SurefireExecutionException;
import org.apache.maven.toolchain.ToolchainManager;
@@ -567,19 +565,13 @@ public class SurefirePlugin
public void execute()
throws MojoExecutionException, MojoFailureException
{
- final WellKnownProvider provider = initialize();
if ( verifyParameters() )
{
- final Classpath bootClasspathConfiguration = new Classpath();
- ForkConfiguration forkConfiguration = getForkConfiguration( bootClasspathConfiguration );
+ logReportsDirectory();
- BooterConfiguration booterConfiguration = createBooterConfiguration( forkConfiguration, provider );
-
- getLog().info(
- StringUtils.capitalizeFirstLetter( getPluginName() ) + " report directory: " + getReportsDirectory() );
-
- ForkStarter forkStarter = new ForkStarter( booterConfiguration, reportsDirectory, forkConfiguration,
- getForkedProcessTimeoutInSeconds() );
+ final WellKnownProvider provider = initialize();
+ ForkConfiguration forkConfiguration = getForkConfiguration();
+ ForkStarter forkStarter = createForkStarter( provider, forkConfiguration );
int result;
try
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterConstants.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterConstants.java?rev=1042818&r1=1042817&r2=1042818&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterConstants.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterConstants.java Mon Dec 6 22:28:01 2010
@@ -1,5 +1,25 @@
package org.apache.maven.surefire.booter;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+
/**
* Constants used by the serializer/deserializer
* @author Kristian Rosenvold
@@ -22,8 +42,8 @@ public interface BooterConstants
String FAILIFNOTESTS = "failIfNoTests";
String ISTRIMSTACKTRACE = "isTrimStackTrace";
String REPORTSDIRECTORY = "reportsDirectory";
- String TESTNGVERSION = "testNgVersion";
- String TESTNG_CLASSIFIER = "testNgClassifier";
+ String TESTARTIFACT_VERSION = "testFwJarVersion";
+ String TESTARTIFACT_CLASSIFIER = "testFwJarClassifier";
String REQUESTEDTEST = "requestedTest";
String SOURCE_DIRECTORY = "testSuiteDefinitionTestSourceDirectory";
String TEST_CLASSES_DIRECTORY = "testClassesDirectory";
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterDeserializer.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterDeserializer.java?rev=1042818&r1=1042817&r2=1042818&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterDeserializer.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterDeserializer.java Mon Dec 6 22:28:01 2010
@@ -53,10 +53,15 @@ public class BooterDeserializer
{
- public BooterConfiguration deserialize( InputStream inputStream )
+ final PropertiesWrapper properties;
+
+ public BooterDeserializer(InputStream inputStream ) throws IOException {
+ properties = SystemPropertyManager.loadProperties( inputStream );
+ }
+
+ public ProviderConfiguration deserialize()
throws IOException
{
- PropertiesWrapper properties = SystemPropertyManager.loadProperties( inputStream );
DirectoryScannerParameters dirScannerParams;
boolean enableAssertions = false;
boolean childDelegation = true;
@@ -140,13 +145,13 @@ public class BooterDeserializer
{
reportsDirectory = new File( properties.getProperty( REPORTSDIRECTORY ) );
}
- else if ( TESTNGVERSION.equals( name ) )
+ else if ( TESTARTIFACT_VERSION.equals( name ) )
{
- testNgVersion = properties.getProperty( TESTNGVERSION );
+ testNgVersion = properties.getProperty( TESTARTIFACT_VERSION );
}
- else if ( TESTNG_CLASSIFIER.equals( name ) )
+ else if ( TESTARTIFACT_CLASSIFIER.equals( name ) )
{
- testNgClassifier = properties.getProperty( TESTNG_CLASSIFIER );
+ testNgClassifier = properties.getProperty( TESTARTIFACT_CLASSIFIER );
}
else if ( FORKTESTSET.equals( name ) )
{
@@ -194,13 +199,74 @@ public class BooterDeserializer
ReporterConfiguration reporterConfiguration =
new ReporterConfiguration( reports, reportsDirectory, valueOf( isTrimStackTrace ) );
- ProviderConfiguration surefireStarterConfiguration =
- ProviderConfiguration.inForkedVm( providerConfiguration, classpathConfiguration, classLoaderConfiguration );
- return new BooterConfiguration( surefireStarterConfiguration, reports, dirScannerParams, failIfNotests,
+ StartupConfiguration surefireStarterConfiguration =
+ StartupConfiguration.inForkedVm( providerConfiguration, classpathConfiguration, classLoaderConfiguration );
+ return new ProviderConfiguration(reports, dirScannerParams, failIfNotests,
reporterConfiguration, testNg, testSuiteDefinition, properties.getProperties(),
testForFork );
}
+ public StartupConfiguration getProviderConfiguration()
+ throws IOException
+ {
+ boolean enableAssertions = false;
+ boolean childDelegation = true;
+ boolean useSystemClassLoader = false; // todo check default value
+ boolean useManifestOnlyJar = false; // todo check default value
+
+ SortedMap classPathUrls = new TreeMap();
+
+ SortedMap surefireClassPathUrls = new TreeMap();
+
+ String providerConfiguration = null;
+
+ for ( Enumeration e = properties.propertyNames(); e.hasMoreElements(); )
+ {
+ String name = (String) e.nextElement();
+
+ if ( name.startsWith( CLASSPATH_URL ) )
+ {
+ classPathUrls.put( Integer.valueOf( name.substring( name.indexOf( '.' ) + 1 ) ),
+ properties.getProperty( name ) );
+ }
+ else if ( name.startsWith( SUREFIRE_CLASSPATHURL ) )
+ {
+ surefireClassPathUrls.put( Integer.valueOf( name.substring( name.indexOf( '.' ) + 1 ) ),
+ properties.getProperty( name ) );
+ }
+ else if ( CHILD_DELEGATION.equals( name ) )
+ {
+ childDelegation = properties.getBooleanProperty( CHILD_DELEGATION );
+ }
+ else if ( ENABLE_ASSERTIONS.equals( name ) )
+ {
+ enableAssertions = properties.getBooleanProperty( ENABLE_ASSERTIONS );
+ }
+ else if ( USESYSTEMCLASSLOADER.equals( name ) )
+ {
+ useSystemClassLoader = properties.getBooleanProperty( USESYSTEMCLASSLOADER );
+ }
+ else if ( USEMANIFESTONLYJAR.equals( name ) )
+ {
+ useManifestOnlyJar = properties.getBooleanProperty( USEMANIFESTONLYJAR );
+ }
+ else if ( PROVIDER_CONFIGURATION.equals( name ) )
+ {
+ providerConfiguration = properties.getProperty( PROVIDER_CONFIGURATION );
+ }
+ }
+
+
+ ClassLoaderConfiguration classLoaderConfiguration =
+ new ClassLoaderConfiguration( useSystemClassLoader, useManifestOnlyJar );
+
+ ClasspathConfiguration classpathConfiguration =
+ new ClasspathConfiguration( classPathUrls, surefireClassPathUrls, enableAssertions, childDelegation );
+
+ return StartupConfiguration.inForkedVm( providerConfiguration, classpathConfiguration,
+ classLoaderConfiguration );
+ }
+
private Boolean valueOf( boolean aBoolean )
{ // jdk1.3 compat
return aBoolean ? Boolean.TRUE : Boolean.FALSE;
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java?rev=1042818&r1=1042817&r2=1042818&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java Mon Dec 6 22:28:01 2010
@@ -60,10 +60,11 @@ public class ForkedBooter
File surefirePropertiesFile = new File( args[0] );
InputStream stream = surefirePropertiesFile.exists() ? new FileInputStream( surefirePropertiesFile ) : null;
- BooterDeserializer booterDeserializer = new BooterDeserializer();
- BooterConfiguration booterConfiguration = booterDeserializer.deserialize( stream );
+ BooterDeserializer booterDeserializer = new BooterDeserializer(stream);
+ ProviderConfiguration booterConfiguration = booterDeserializer.deserialize();
+ final StartupConfiguration providerConfiguration = booterDeserializer.getProviderConfiguration();
- SurefireStarter booter = new SurefireStarter( booterConfiguration );
+ SurefireStarter booter = new SurefireStarter( providerConfiguration, booterConfiguration );
Object forkedTestSet = booterConfiguration.getTestForFork();
Properties p = booterConfiguration.getProviderProperties();
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.java?rev=1042818&r1=1042817&r2=1042818&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.java Mon Dec 6 22:28:01 2010
@@ -19,67 +19,143 @@ package org.apache.maven.surefire.booter
* under the License.
*/
+import org.apache.maven.surefire.report.ReporterConfiguration;
+import org.apache.maven.surefire.testset.DirectoryScannerParameters;
+import org.apache.maven.surefire.testset.TestArtifactInfo;
+import org.apache.maven.surefire.testset.TestRequest;
+
+import java.io.File;
+import java.util.List;
+import java.util.Properties;
+
/**
- * Configuration that is used by the surefirestarter but does not make it into the provider itself.
+ * Represents the surefire configuration that passes all the way into the provider
+ * classloader and the provider.
+ * <p/>
*
+ * @author Jason van Zyl
+ * @author Emmanuel Venisse
* @author Kristian Rosenvold
+ * @version $Id$
*/
public class ProviderConfiguration
{
- private final String providerClassName;
+ /**
+ * @noinspection UnusedDeclaration
+ */
+ public static final int TESTS_SUCCEEDED_EXIT_CODE = 0;
+
+ public static final int TESTS_FAILED_EXIT_CODE = 255;
+
+ public static final int NO_TESTS_EXIT_CODE = 254;
+
+ private final DirectoryScannerParameters dirScannerParams;
+
+ private final ReporterConfiguration reporterConfiguration;
+
+ private final List reports;
+
+ private final TestArtifactInfo testArtifact;
+
+ private final TestRequest testSuiteDefinition;
- private final ClasspathConfiguration classpathConfiguration;
+ private Properties providerProperties;
- private final ClassLoaderConfiguration classLoaderConfiguration;
+ private final boolean failIfNoTests;
- private final boolean isForkRequested;
+ private final Object forkTestSet;
- private final boolean isInForkedVm;
+ public ProviderConfiguration( List reports, DirectoryScannerParameters directoryScannerParameters,
+ boolean failIfNoTests, ReporterConfiguration reporterConfiguration,
+ TestArtifactInfo testArtifact, TestRequest testSuiteDefinition,
+ Properties providerProperties, Object forkTestSet )
+ {
+ this.providerProperties = providerProperties;
+ this.reporterConfiguration = reporterConfiguration;
+ this.testArtifact = testArtifact;
+ this.testSuiteDefinition = testSuiteDefinition;
+ this.dirScannerParams = directoryScannerParameters;
+ this.failIfNoTests = failIfNoTests;
+ this.reports = reports;
+ this.forkTestSet = forkTestSet;
+ }
- private final boolean redirectTestOutputToFile;
+
+ public ReporterConfiguration getReporterConfiguration()
+ {
+ return reporterConfiguration;
+ }
- public ProviderConfiguration( String providerClassName, ClasspathConfiguration classpathConfiguration,
- ClassLoaderConfiguration classLoaderConfiguration, boolean forkRequested,
- boolean inForkedVm, boolean redirectTestOutputToFile )
+ public List getReports()
{
- this.providerClassName = providerClassName;
- this.classpathConfiguration = classpathConfiguration;
- this.classLoaderConfiguration = classLoaderConfiguration;
- isForkRequested = forkRequested;
- isInForkedVm = inForkedVm;
- this.redirectTestOutputToFile = redirectTestOutputToFile;
+ return reports;
}
- public static ProviderConfiguration inForkedVm(String providerClassName, ClasspathConfiguration classpathConfiguration,
- ClassLoaderConfiguration classLoaderConfiguration){
- return new ProviderConfiguration( providerClassName, classpathConfiguration, classLoaderConfiguration, false, true, false );
+ public Boolean isFailIfNoTests()
+ {
+ return ( failIfNoTests ) ? Boolean.TRUE : Boolean.FALSE;
}
- public ClasspathConfiguration getClasspathConfiguration()
+ public File getBaseDir()
{
- return classpathConfiguration;
+ return dirScannerParams.getTestClassesDirectory();
}
- public boolean useSystemClassLoader()
+
+ public DirectoryScannerParameters getDirScannerParams()
{
- // todo; I am not totally convinced this logic is as simple as it could be
- return classLoaderConfiguration.isUseSystemClassLoader() && ( isInForkedVm || isForkRequested );
+ return dirScannerParams;
}
- public boolean isManifestOnlyJarRequestedAndUsable()
+ public Object[] getDirScannerParamsArray()
{
- return classLoaderConfiguration.isManifestOnlyJarRequestedAndUsable();
+ if ( dirScannerParams == null )
+ {
+ return null;
+ }
+ return new Object[]{ dirScannerParams.getTestClassesDirectory(), dirScannerParams.getIncludes(),
+ dirScannerParams.getExcludes() };
}
- public boolean isRedirectTestOutputToFile()
+ public List getIncludes()
{
- return redirectTestOutputToFile;
+ return dirScannerParams.getIncludes();
}
- public String getProviderClassName()
+ public List getExcludes()
{
- return providerClassName;
+ return dirScannerParams.getExcludes();
}
+ public TestArtifactInfo getTestArtifact()
+ {
+ return testArtifact;
+ }
+
+ public TestRequest getTestSuiteDefinition()
+ {
+ return testSuiteDefinition;
+ }
+
+ public Properties getProviderProperties()
+ {
+ return providerProperties;
+ }
+
+ public Object getTestForFork()
+ {
+ return forkTestSet;
+ }
+
+ public String getTestForForkString()
+ {
+ if ( forkTestSet instanceof File )
+ {
+ return forkTestSet.toString();
+ }
+ return (String) forkTestSet;
+ }
+
+
}
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java?rev=1042818&r1=1042817&r2=1042818&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java Mon Dec 6 22:28:01 2010
@@ -34,16 +34,21 @@ import java.lang.reflect.Proxy;
*/
public class ProviderFactory
{
- private final BooterConfiguration booterConfiguration;
+ private final StartupConfiguration startupConfiguration;
+
+ private final ProviderConfiguration providerConfiguration;
private final ClassLoader surefireClassLoader;
private final SurefireReflector surefireReflector;
- public ProviderFactory( BooterConfiguration booterConfiguration, ClassLoader surefireClassLoader )
+
+ public ProviderFactory( StartupConfiguration startupConfiguration, ProviderConfiguration providerConfiguration,
+ ClassLoader surefireClassLoader )
{
- this.booterConfiguration = booterConfiguration;
+ this.providerConfiguration = providerConfiguration;
this.surefireClassLoader = surefireClassLoader;
+ this.startupConfiguration = startupConfiguration;
this.surefireReflector = new SurefireReflector( surefireClassLoader );
}
@@ -52,15 +57,15 @@ public class ProviderFactory
ClassLoader context = java.lang.Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader( surefireClassLoader );
- ProviderConfiguration starterConfiguration = booterConfiguration.getSurefireStarterConfiguration();
+ StartupConfiguration starterConfiguration = startupConfiguration;
final Object o =
surefireReflector.createBooterConfiguration();
- surefireReflector.setTestSuiteDefinitionAware( o, booterConfiguration.getTestSuiteDefinition() );
- surefireReflector.setProviderPropertiesAware( o, booterConfiguration.getProviderProperties() );
- surefireReflector.setReporterConfigurationAware( o, booterConfiguration.getReporterConfiguration() );
+ surefireReflector.setTestSuiteDefinitionAware( o, providerConfiguration.getTestSuiteDefinition() );
+ surefireReflector.setProviderPropertiesAware( o, providerConfiguration.getProviderProperties() );
+ surefireReflector.setReporterConfigurationAware( o, providerConfiguration.getReporterConfiguration() );
surefireReflector.setTestClassLoaderAware( o, surefireClassLoader, testClassLoader );
- surefireReflector.setTestArtifactInfoAware( o, booterConfiguration.getTestNg() );
- surefireReflector.setIfDirScannerAware( o, booterConfiguration.getDirScannerParams() );
+ surefireReflector.setTestArtifactInfoAware( o, providerConfiguration.getTestArtifact() );
+ surefireReflector.setIfDirScannerAware( o, providerConfiguration.getDirScannerParams() );
Object provider = surefireReflector.instantiateProvider( starterConfiguration.getProviderClassName(), o );
Thread.currentThread().setContextClassLoader( context );
Copied: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/StartupConfiguration.java (from r1042451, maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.java)
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/StartupConfiguration.java?p2=maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/StartupConfiguration.java&p1=maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.java&r1=1042451&r2=1042818&rev=1042818&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/StartupConfiguration.java Mon Dec 6 22:28:01 2010
@@ -20,11 +20,11 @@ package org.apache.maven.surefire.booter
*/
/**
- * Configuration that is used by the surefirestarter but does not make it into the provider itself.
+ * Configuration that is used by the SurefireStarter but does not make it into the provider itself.
*
* @author Kristian Rosenvold
*/
-public class ProviderConfiguration
+public class StartupConfiguration
{
private final String providerClassName;
@@ -39,9 +39,9 @@ public class ProviderConfiguration
private final boolean redirectTestOutputToFile;
- public ProviderConfiguration( String providerClassName, ClasspathConfiguration classpathConfiguration,
- ClassLoaderConfiguration classLoaderConfiguration, boolean forkRequested,
- boolean inForkedVm, boolean redirectTestOutputToFile )
+ public StartupConfiguration( String providerClassName, ClasspathConfiguration classpathConfiguration,
+ ClassLoaderConfiguration classLoaderConfiguration, boolean forkRequested,
+ boolean inForkedVm, boolean redirectTestOutputToFile )
{
this.providerClassName = providerClassName;
this.classpathConfiguration = classpathConfiguration;
@@ -51,9 +51,9 @@ public class ProviderConfiguration
this.redirectTestOutputToFile = redirectTestOutputToFile;
}
- public static ProviderConfiguration inForkedVm(String providerClassName, ClasspathConfiguration classpathConfiguration,
+ public static StartupConfiguration inForkedVm(String providerClassName, ClasspathConfiguration classpathConfiguration,
ClassLoaderConfiguration classLoaderConfiguration){
- return new ProviderConfiguration( providerClassName, classpathConfiguration, classLoaderConfiguration, false, true, false );
+ return new StartupConfiguration( providerClassName, classpathConfiguration, classLoaderConfiguration, false, true, false );
}
public ClasspathConfiguration getClasspathConfiguration()
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireStarter.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireStarter.java?rev=1042818&r1=1042817&r2=1042818&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireStarter.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireStarter.java Mon Dec 6 22:28:01 2010
@@ -41,17 +41,20 @@ public class SurefireStarter
{
private static final int NO_TESTS = 254;
- private final BooterConfiguration booterConfiguration;
+ private final ProviderConfiguration booterConfiguration;
- public SurefireStarter( BooterConfiguration booterConfiguration )
+ private final StartupConfiguration providerConfiguration;
+
+ public SurefireStarter( StartupConfiguration providerConfiguration, ProviderConfiguration booterConfiguration )
{
this.booterConfiguration = booterConfiguration;
+ this.providerConfiguration = providerConfiguration;
}
public RunResult runSuitesInProcess( Object testSet )
throws SurefireExecutionException
{
- final ProviderConfiguration starterConfiguration = booterConfiguration.getSurefireStarterConfiguration();
+ final StartupConfiguration starterConfiguration = providerConfiguration;
final ClasspathConfiguration classpathConfiguration = starterConfiguration.getClasspathConfiguration();
ClassLoader testsClassLoader = classpathConfiguration.createTestClassLoaderConditionallySystem(
@@ -70,7 +73,7 @@ public class SurefireStarter
ClassLoader testsClassLoader = createInProcessTestClassLoader();
final ClasspathConfiguration classpathConfiguration =
- booterConfiguration.getSurefireStarterConfiguration().getClasspathConfiguration();
+ providerConfiguration.getClasspathConfiguration();
ClassLoader surefireClassLoader = classpathConfiguration.createSurefireClassLoader( testsClassLoader );
@@ -82,13 +85,12 @@ public class SurefireStarter
{
ClassLoader testsClassLoader;
- final ProviderConfiguration starterConfiguration = booterConfiguration.getSurefireStarterConfiguration();
- final ClasspathConfiguration classpathConfiguration = starterConfiguration.getClasspathConfiguration();
+ final ClasspathConfiguration classpathConfiguration = providerConfiguration.getClasspathConfiguration();
String testClassPath = classpathConfiguration.getTestClasspath().getClassPathAsString();
System.setProperty( "surefire.test.class.path", testClassPath );
- if ( starterConfiguration.isManifestOnlyJarRequestedAndUsable() )
+ if ( providerConfiguration.isManifestOnlyJarRequestedAndUsable() )
{
testsClassLoader = getClass().getClassLoader(); // ClassLoader.getSystemClassLoader()
// SUREFIRE-459, trick the app under test into thinking its classpath was conventional
@@ -122,7 +124,8 @@ public class SurefireStarter
private RunResult invokeProvider( Object testSet, ClassLoader testsClassLoader, ClassLoader surefireClassLoader )
{
- ProviderFactory providerFactory = new ProviderFactory( booterConfiguration, surefireClassLoader );
+ ProviderFactory providerFactory = new ProviderFactory( providerConfiguration, booterConfiguration,
+ surefireClassLoader );
final SurefireProvider provider = providerFactory.createProvider( testsClassLoader );
try
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SystemPropertyManager.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SystemPropertyManager.java?rev=1042818&r1=1042817&r2=1042818&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SystemPropertyManager.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SystemPropertyManager.java Mon Dec 6 22:28:01 2010
@@ -70,7 +70,8 @@ public class SystemPropertyManager
p.setAsSystemProperties();
}
- public File writePropertiesFile( Properties properties, File tempDirectory, String name, boolean deleteOnExit )
+ public static File writePropertiesFile( Properties properties, File tempDirectory, String name,
+ boolean deleteOnExit )
throws IOException
{
File file = File.createTempFile( name, "tmp", tempDirectory );
@@ -84,7 +85,7 @@ public class SystemPropertyManager
return file;
}
- static void writePropertiesFile( File file, String name, Properties properties )
+ public static void writePropertiesFile( File file, String name, Properties properties )
throws IOException
{
FileOutputStream out = new FileOutputStream( file );
@@ -99,12 +100,6 @@ public class SystemPropertyManager
}
}
-
- /**
- * Closes the input stream. The input stream can be null and any IOException's will be swallowed.
- *
- * @param inputStream The stream to close.
- */
public static void close( InputStream inputStream )
{
if ( inputStream == null )