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/09 21:35:10 UTC
svn commit: r1044121 - in /maven/surefire/trunk:
maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/
maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/
maven-surefire-common/src/test/java/org/apache/mav...
Author: krosenvold
Date: Thu Dec 9 20:35:09 2010
New Revision: 1044121
URL: http://svn.apache.org/viewvc?rev=1044121&view=rev
Log:
o Simplified booter serialization/deserialization significantly further
Test coverage improved too.
Added:
maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerProviderConfigurationTest.java (contents, props changed)
- copied, changed from r1043721, maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerTest.java
maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerStartupConfigurationTest.java (with props)
Removed:
maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerTest.java
Modified:
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/booterclient/BooterSerializer.java
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestRequest.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/ClassLoaderConfiguration.java
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClasspathConfiguration.java
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/PropertiesWrapper.java
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireStarter.java
maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java
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=1044121&r1=1044120&r2=1044121&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 Thu Dec 9 20:35:09 2010
@@ -268,7 +268,8 @@ public abstract class AbstractSurefireMo
final boolean isTestNg = testNgArtifact != null;
TestArtifactInfo testNg =
isTestNg ? new TestArtifactInfo( testNgArtifact.getVersion(), testNgArtifact.getClassifier() ) : null;
- TestRequest testSuiteDefinition = new TestRequest( getSuiteXmlFiles(), getTestSourceDirectory(), getTest() );
+ List testXml = getSuiteXmlFiles() != null ? Arrays.asList( getSuiteXmlFiles() ) : null;
+ TestRequest testSuiteDefinition = new TestRequest( testXml, getTestSourceDirectory(), getTest() );
final boolean failIfNoTests;
if ( isValidSuiteXmlFileConfig() && getTest() == null )
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=1044121&r1=1044120&r2=1044121&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 Thu Dec 9 20:35:09 2010
@@ -20,6 +20,7 @@ package org.apache.maven.plugin.surefire
import org.apache.maven.surefire.booter.BooterConstants;
import org.apache.maven.surefire.booter.ClassLoaderConfiguration;
+import org.apache.maven.surefire.booter.PropertiesWrapper;
import org.apache.maven.surefire.booter.ProviderConfiguration;
import org.apache.maven.surefire.booter.StartupConfiguration;
import org.apache.maven.surefire.booter.SystemPropertyManager;
@@ -54,71 +55,40 @@ public class BooterSerializer
{
private final ForkConfiguration forkConfiguration;
- public BooterSerializer( ForkConfiguration forkConfiguration )
+ private final PropertiesWrapper properties;
+
+ public BooterSerializer( ForkConfiguration forkConfiguration, Properties properties )
{
this.forkConfiguration = forkConfiguration;
+ this.properties = new PropertiesWrapper( properties );
}
- public File serialize( Properties properties, ProviderConfiguration booterConfiguration,
- StartupConfiguration providerConfiguration, Object testSet )
+ public File serialize( ProviderConfiguration booterConfiguration, StartupConfiguration providerConfiguration,
+ Object testSet )
throws IOException
{
- setForkProperties( properties, booterConfiguration, providerConfiguration, testSet );
-
- return SystemPropertyManager.writePropertiesFile( properties, forkConfiguration.getTempDirectory(), "surefire",
- forkConfiguration.isDebug() );
- }
-
- private void setForkProperties( Properties properties, ProviderConfiguration booterConfiguration,
- StartupConfiguration providerConfiguration, Object testSet )
- {
- if ( properties == null )
- {
- throw new IllegalStateException( "Properties cannot be null" );
- }
List params = new ArrayList();
params.add(
new Object[]{ BooterConstants.DIRSCANNER_OPTIONS, booterConfiguration.getDirScannerParamsArray() } );
- addPropertiesForTypeHolder( params, properties, BooterConstants.DIRSCANNER_PROPERTY_PREFIX );
+ addPropertiesForTypeHolder( params, properties.getProperties(), BooterConstants.DIRSCANNER_PROPERTY_PREFIX );
- providerConfiguration.getClasspathConfiguration().setForkProperties( properties );
+ providerConfiguration.getClasspathConfiguration().setForkProperties( properties.getProperties() );
TestArtifactInfo testNg = booterConfiguration.getTestArtifact();
if ( testNg != null )
{
- if ( testNg.getVersion() != null )
- {
- properties.setProperty( BooterConstants.TESTARTIFACT_VERSION, testNg.getVersion() );
- }
- if ( testNg.getClassifier() != null )
- {
- properties.setProperty( BooterConstants.TESTARTIFACT_CLASSIFIER, testNg.getClassifier() );
- }
- }
-
- if ( testSet != null )
- {
- properties.setProperty( BooterConstants.FORKTESTSET, getTypeEncoded( testSet ) );
+ properties.setProperty( BooterConstants.TESTARTIFACT_VERSION, testNg.getVersion() );
+ properties.setProperty( BooterConstants.TESTARTIFACT_CLASSIFIER, testNg.getClassifier() );
}
+ properties.setProperty( BooterConstants.FORKTESTSET, getTypeEncoded( testSet ) );
TestRequest testSuiteDefinition = booterConfiguration.getTestSuiteDefinition();
if ( testSuiteDefinition != null )
{
- if ( testSuiteDefinition.getTestSourceDirectory() != null )
- {
- properties.setProperty( BooterConstants.SOURCE_DIRECTORY,
- testSuiteDefinition.getTestSourceDirectory().toString() );
- }
- if ( testSuiteDefinition.getSuiteXmlFiles() != null )
- {
- properties.setProperty( BooterConstants.TEST_SUITE_XML_FILES,
- getValues( testSuiteDefinition.getSuiteXmlFiles() ) );
- }
- if ( testSuiteDefinition.getRequestedTest() != null )
- {
- properties.setProperty( BooterConstants.REQUESTEDTEST, testSuiteDefinition.getRequestedTest() );
- }
+ properties.setProperty( BooterConstants.SOURCE_DIRECTORY, testSuiteDefinition.getTestSourceDirectory() );
+ properties.addList( testSuiteDefinition.getSuiteXmlFiles(), BooterConstants.TEST_SUITE_XML_FILES );
+ properties.setProperty( BooterConstants.REQUESTEDTEST, testSuiteDefinition.getRequestedTest() );
}
DirectoryScannerParameters directoryScannerParameters = booterConfiguration.getDirScannerParams();
@@ -126,35 +96,41 @@ public class BooterSerializer
{
properties.setProperty( BooterConstants.FAILIFNOTESTS,
String.valueOf( directoryScannerParameters.isFailIfNoTests() ) );
- addList( directoryScannerParameters.getIncludes(), properties, BooterConstants.INCLUDES_PROPERTY_PREFIX );
- addList( directoryScannerParameters.getExcludes(), properties, BooterConstants.EXCLUDES_PROPERTY_PREFIX );
+ properties.addList( directoryScannerParameters.getIncludes(), BooterConstants.INCLUDES_PROPERTY_PREFIX );
+ properties.addList( directoryScannerParameters.getExcludes(), BooterConstants.EXCLUDES_PROPERTY_PREFIX );
properties.setProperty( BooterConstants.TEST_CLASSES_DIRECTORY,
- directoryScannerParameters.getTestClassesDirectory().toString() );
+ directoryScannerParameters.getTestClassesDirectory() );
}
ReporterConfiguration reporterConfiguration = booterConfiguration.getReporterConfiguration();
- addList( reporterConfiguration.getReports(), properties, BooterConstants.REPORT_PROPERTY_PREFIX );
+ addList( reporterConfiguration.getReports(), properties.getProperties(),
+ BooterConstants.REPORT_PROPERTY_PREFIX );
Boolean rep = reporterConfiguration.isTrimStackTrace();
- properties.setProperty( BooterConstants.ISTRIMSTACKTRACE, rep.toString() );
+ properties.setProperty( BooterConstants.ISTRIMSTACKTRACE, rep );
properties.setProperty( BooterConstants.REPORTSDIRECTORY,
- reporterConfiguration.getReportsDirectory().toString() );
+ reporterConfiguration.getReportsDirectory());
ClassLoaderConfiguration classLoaderConfiguration = providerConfiguration.getClassLoaderConfiguration();
properties.setProperty( BooterConstants.USESYSTEMCLASSLOADER,
String.valueOf( classLoaderConfiguration.isUseSystemClassLoader() ) );
- // Note that using isManifestOnlyJarRequestedAndUsable has a really nasty code smell to it.
- // Should probably be using the staright "isManifestOnlyJar" attribute.
- // But this actually still does the correct thing as is.
properties.setProperty( BooterConstants.USEMANIFESTONLYJAR,
- String.valueOf( classLoaderConfiguration.isManifestOnlyJarRequestedAndUsable() ) );
+ String.valueOf( classLoaderConfiguration.isUseManifestOnlyJar() ) );
properties.setProperty( BooterConstants.FAILIFNOTESTS,
String.valueOf( booterConfiguration.isFailIfNoTests() ) );
properties.setProperty( BooterConstants.PROVIDER_CONFIGURATION, providerConfiguration.getProviderClassName() );
+
+ return SystemPropertyManager.writePropertiesFile( properties.getProperties(),
+ forkConfiguration.getTempDirectory(), "surefire",
+ forkConfiguration.isDebug() );
}
private String getTypeEncoded( Object value )
{
+ if ( value == null )
+ {
+ return null;
+ }
return value.getClass().getName() + "|" + value.toString();
}
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=1044121&r1=1044120&r2=1044121&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 Thu Dec 9 20:35:09 2010
@@ -165,10 +165,10 @@ public class ForkStarter
File systemProperties = null;
try
{
- BooterSerializer booterSerializer = new BooterSerializer( forkConfiguration );
+ BooterSerializer booterSerializer = new BooterSerializer( forkConfiguration, properties );
surefireProperties =
- booterSerializer.serialize( properties, providerConfiguration, startupConfiguration, testSet );
+ booterSerializer.serialize( providerConfiguration, startupConfiguration, testSet );
if ( forkConfiguration.getSystemProperties() != null )
{
Copied: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerProviderConfigurationTest.java (from r1043721, 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/BooterDeserializerProviderConfigurationTest.java?p2=maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerProviderConfigurationTest.java&p1=maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerTest.java&r1=1043721&r2=1044121&rev=1044121&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/BooterDeserializerProviderConfigurationTest.java Thu Dec 9 20:35:09 2010
@@ -36,15 +36,16 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Properties;
/**
- * Performs roundtrip testing of serialization/deserialization
+ * Performs roundtrip testing of serialization/deserialization of the ProviderConfiguration
*
* @author Kristian Rosenvold
*/
-public class BooterDeserializerTest
+public class BooterDeserializerProviderConfigurationTest
extends TestCase
{
@@ -58,6 +59,7 @@ public class BooterDeserializerTest
return new ClassLoaderConfiguration( true, false );
}
+ // ProviderConfiguration methods
public void testDirectoryScannerParams()
throws IOException
{
@@ -70,13 +72,10 @@ public class BooterDeserializerTest
excludes.add( "xx1" );
excludes.add( "xx2" );
- DirectoryScannerParameters directoryScannerParameters =
- new DirectoryScannerParameters( aDir, includes, excludes, Boolean.TRUE );
ClassLoaderConfiguration forkConfiguration = getForkConfiguration();
- final StartupConfiguration testProviderConfiguration = getTestProviderConfiguration( forkConfiguration );
- ProviderConfiguration booterConfiguration =
- getTestBooterConfiguration( forkConfiguration, directoryScannerParameters, new ArrayList() );
- ProviderConfiguration read = saveAndReload( booterConfiguration, testProviderConfiguration );
+ final StartupConfiguration testStartupConfiguration = getTestStartupConfiguration( forkConfiguration );
+ ProviderConfiguration providerConfiguration = getReloadedProviderConfiguration(new ArrayList( ) );
+ ProviderConfiguration read = saveAndReload( providerConfiguration, testStartupConfiguration );
Assert.assertEquals( aDir, read.getBaseDir() );
Assert.assertEquals( includes.get( 0 ), read.getIncludes().get( 0 ) );
@@ -86,7 +85,7 @@ public class BooterDeserializerTest
}
- public void testReports()
+ public void testReporterConfiguration()
throws IOException
{
DirectoryScannerParameters directoryScannerParameters = getDirectoryScannerParameters();
@@ -99,16 +98,15 @@ public class BooterDeserializerTest
reports.add( second );
reports.add( third );
- ProviderConfiguration booterConfiguration =
- getTestBooterConfiguration( forkConfiguration, directoryScannerParameters, reports );
+ ProviderConfiguration providerConfiguration = getTestProviderConfiguration( directoryScannerParameters, reports );
- final ReporterConfiguration reporterConfiguration = booterConfiguration.getReporterConfiguration();
+ final ReporterConfiguration reporterConfiguration = providerConfiguration.getReporterConfiguration();
reporterConfiguration.getReports().add( first );
reporterConfiguration.getReports().add( second );
reporterConfiguration.getReports().add( third );
- final StartupConfiguration testProviderConfiguration = getTestProviderConfiguration( forkConfiguration );
- ProviderConfiguration reloaded = saveAndReload( booterConfiguration, testProviderConfiguration );
+ final StartupConfiguration testProviderConfiguration = getTestStartupConfiguration( forkConfiguration );
+ ProviderConfiguration reloaded = saveAndReload( providerConfiguration, testProviderConfiguration );
Assert.assertEquals( first, reloaded.getReporterConfiguration().getReports().get( 0 ) );
Assert.assertEquals( second, reloaded.getReporterConfiguration().getReports().get( 1 ) );
@@ -118,62 +116,52 @@ public class BooterDeserializerTest
public void testTestArtifact()
throws IOException
{
- ProviderConfiguration reloaded = getReloadedProviderConfiguration();
+ ProviderConfiguration reloaded = getReloadedProviderConfiguration( new ArrayList() );
Assert.assertEquals( "5.0", reloaded.getTestArtifact().getVersion() );
Assert.assertEquals( "ABC", reloaded.getTestArtifact().getClassifier() );
}
- public void testTestSuiteDefinition()
+ public void testTestRequest()
throws IOException
{
- ProviderConfiguration reloaded = getReloadedProviderConfiguration();
+ ProviderConfiguration reloaded = getReloadedProviderConfiguration(new ArrayList( ) );
TestRequest testSuiteDefinition = reloaded.getTestSuiteDefinition();
- File[] suiteXmlFiles = testSuiteDefinition.getSuiteXmlFiles();
+ List suiteXmlFiles = testSuiteDefinition.getSuiteXmlFiles();
File[] expected = getSuiteXmlFiles();
- Assert.assertEquals( expected[0], suiteXmlFiles[0] );
- Assert.assertEquals( expected[1], suiteXmlFiles[1] );
- Assert.assertEquals( aTest, reloaded.getTestForForkString() );
- Assert.assertEquals( getTEstSourceDirectory(), testSuiteDefinition.getTestSourceDirectory() );
+ Assert.assertEquals( expected[0], suiteXmlFiles.get(0) );
+ Assert.assertEquals( expected[1], suiteXmlFiles.get(1) );
+ Assert.assertEquals( getTestSourceDirectory(), testSuiteDefinition.getTestSourceDirectory() );
Assert.assertEquals( aUserRequestedTest, testSuiteDefinition.getRequestedTest() );
-
-
}
- public void testProvider()
+ public void testTestForFork()
throws IOException
{
- assertEquals( "com.provider", getReloadedStartupConfiguration().getProviderClassName() );
+ final ProviderConfiguration reloaded = getReloadedProviderConfiguration( new ArrayList() );
+ Assert.assertEquals( aTest, reloaded.getTestForForkString() );
}
public void testFailIfNoTests()
throws IOException
{
- ProviderConfiguration reloaded = getReloadedProviderConfiguration();
+ ProviderConfiguration reloaded = getReloadedProviderConfiguration( new ArrayList() );
assertTrue( reloaded.isFailIfNoTests().booleanValue() );
}
- private ProviderConfiguration getReloadedProviderConfiguration()
+ private ProviderConfiguration getReloadedProviderConfiguration( ArrayList reports )
throws IOException
{
DirectoryScannerParameters directoryScannerParameters = getDirectoryScannerParameters();
ClassLoaderConfiguration forkConfiguration = getForkConfiguration();
- ProviderConfiguration booterConfiguration =
- getTestBooterConfiguration( forkConfiguration, directoryScannerParameters, new ArrayList() );
- final StartupConfiguration testProviderConfiguration = getTestProviderConfiguration( forkConfiguration );
+ ProviderConfiguration booterConfiguration = getTestProviderConfiguration( directoryScannerParameters, reports );
+ final StartupConfiguration testProviderConfiguration = getTestStartupConfiguration( forkConfiguration );
return saveAndReload( booterConfiguration, testProviderConfiguration );
}
- private StartupConfiguration getReloadedStartupConfiguration()
- throws IOException
- {
- ClassLoaderConfiguration forkConfiguration = getForkConfiguration();
- return getTestProviderConfiguration( forkConfiguration );
- }
-
private DirectoryScannerParameters getDirectoryScannerParameters()
{
File aDir = new File( "." );
@@ -192,34 +180,30 @@ public class BooterDeserializerTest
throws IOException
{
final ForkConfiguration forkConfiguration = ForkConfigurationTest.getForkConfiguration();
- BooterSerializer booterSerializer = new BooterSerializer( forkConfiguration );
Properties props = new Properties();
- booterSerializer.serialize( props, booterConfiguration, testProviderConfiguration, aTest );
+ BooterSerializer booterSerializer = new BooterSerializer( forkConfiguration, props );
+ booterSerializer.serialize( booterConfiguration, testProviderConfiguration, aTest );
final File propsTest =
SystemPropertyManager.writePropertiesFile( props, forkConfiguration.getTempDirectory(), "propsTest", true );
BooterDeserializer booterDeserializer = new BooterDeserializer( new FileInputStream( propsTest ) );
return booterDeserializer.deserialize();
}
- private ProviderConfiguration getTestBooterConfiguration( ClassLoaderConfiguration classLoaderConfiguration,
- DirectoryScannerParameters directoryScannerParameters,
- List reports )
+ private ProviderConfiguration getTestProviderConfiguration( DirectoryScannerParameters directoryScannerParameters,
+ List reports )
throws IOException
{
- ClasspathConfiguration classpathConfiguration = new ClasspathConfiguration( true, true );
- ReporterConfiguration reporterConfiguration =
- new ReporterConfiguration( reports, new File( "." ), Boolean.TRUE );
+ File cwd = new File( "." );
+ ReporterConfiguration reporterConfiguration = new ReporterConfiguration( reports, cwd, Boolean.TRUE );
TestRequest testSuiteDefinition =
- new TestRequest( getSuiteXmlFileStrings(), getTEstSourceDirectory(), aUserRequestedTest );
- StartupConfiguration surefireStarterConfiguration = getTestProviderConfiguration( classLoaderConfiguration );
-
+ new TestRequest( getSuiteXmlFileStrings(), getTestSourceDirectory(), aUserRequestedTest );
return new ProviderConfiguration( directoryScannerParameters, true, reporterConfiguration,
new TestArtifactInfo( "5.0", "ABC" ), testSuiteDefinition, new Properties(),
aTest );
}
- private StartupConfiguration getTestProviderConfiguration( ClassLoaderConfiguration classLoaderConfiguration )
+ private StartupConfiguration getTestStartupConfiguration( ClassLoaderConfiguration classLoaderConfiguration )
{
ClasspathConfiguration classpathConfiguration = new ClasspathConfiguration( true, true );
@@ -227,7 +211,7 @@ public class BooterDeserializerTest
false );
}
- private File getTEstSourceDirectory()
+ private File getTestSourceDirectory()
{
return new File( "TestSrc" );
}
@@ -237,8 +221,8 @@ public class BooterDeserializerTest
return new File[]{ new File( "A1" ), new File( "A2" ) };
}
- private Object[] getSuiteXmlFileStrings()
+ private List getSuiteXmlFileStrings()
{
- return new Object[]{ "A1", "A2" };
+ return Arrays.asList( new Object[]{ "A1", "A2" });
}
}
Propchange: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerProviderConfigurationTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerStartupConfigurationTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerStartupConfigurationTest.java?rev=1044121&view=auto
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerStartupConfigurationTest.java (added)
+++ maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerStartupConfigurationTest.java Thu Dec 9 20:35:09 2010
@@ -0,0 +1,161 @@
+package org.apache.maven.plugin.surefire.booterclient;
+
+/*
+ * 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.
+ */
+
+import junit.framework.TestCase;
+import org.apache.maven.surefire.booter.BooterConstants;
+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;
+import org.apache.maven.surefire.testset.TestRequest;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Properties;
+
+/**
+ * Performs roundtrip testing of serialization/deserialization of The StartupConfiguration
+ *
+ * @author Kristian Rosenvold
+ */
+public class BooterDeserializerStartupConfigurationTest
+ extends TestCase
+{
+
+ private final String aTest = "aTest";
+
+ private final String aUserRequestedTest = "aUserRequestedTest";
+
+ public void testProvider()
+ throws IOException
+ {
+ assertEquals( "com.provider", getReloadedStartupConfiguration().getProviderClassName() );
+ }
+
+ public void testClassPathConfiguration()
+ throws IOException
+ {
+ final ClasspathConfiguration classpathConfiguration =
+ getReloadedStartupConfiguration().getClasspathConfiguration();
+ Properties props = new Properties();
+ classpathConfiguration.setForkProperties( props );
+ assertEquals( "true", props.get( BooterConstants.ENABLE_ASSERTIONS ) );
+ assertEquals( "true", props.get( BooterConstants.CHILD_DELEGATION ) );
+ assertEquals( "CP1", classpathConfiguration.getTestClasspath().get( 0 ) );
+ assertEquals( "CP2", classpathConfiguration.getTestClasspath().get( 1 ) );
+ assertEquals( "SP1", props.get( BooterConstants.SUREFIRE_CLASSPATHURL + "0" ));
+ assertEquals( "SP2", props.get( BooterConstants.SUREFIRE_CLASSPATHURL + "1" ));
+ }
+
+ public void testClassLoaderConfiguration()
+ throws IOException
+ {
+ assertFalse( getReloadedStartupConfiguration().isManifestOnlyJarRequestedAndUsable() );
+ }
+
+ public void testClassLoaderConfigurationTrues()
+ throws IOException
+ {
+ final StartupConfiguration testStartupConfiguration =
+ getTestStartupConfiguration( getManifestOnlyJarForkConfiguration() );
+ boolean current = testStartupConfiguration.isManifestOnlyJarRequestedAndUsable();
+ assertEquals( current, saveAndReload( testStartupConfiguration ).isManifestOnlyJarRequestedAndUsable() );
+ }
+
+
+ public static ClassLoaderConfiguration getSystemClassLoaderConfiguration()
+ throws IOException
+ {
+ return new ClassLoaderConfiguration( true, false );
+ }
+
+ public static ClassLoaderConfiguration getManifestOnlyJarForkConfiguration()
+ throws IOException
+ {
+ return new ClassLoaderConfiguration( true, true );
+ }
+
+
+ private StartupConfiguration getReloadedStartupConfiguration()
+ throws IOException
+ {
+ ClassLoaderConfiguration classLoaderConfiguration = getSystemClassLoaderConfiguration();
+ return saveAndReload( getTestStartupConfiguration( classLoaderConfiguration ) );
+ }
+
+ private StartupConfiguration saveAndReload( StartupConfiguration startupConfiguration )
+ throws IOException
+ {
+ final ForkConfiguration forkConfiguration =
+ ForkConfigurationTest.getForkConfiguration();
+ Properties props = new Properties();
+ BooterSerializer booterSerializer = new BooterSerializer( forkConfiguration, props );
+ booterSerializer.serialize( getProviderConfiguration(), startupConfiguration, aTest );
+ final File propsTest =
+ SystemPropertyManager.writePropertiesFile( props, forkConfiguration.getTempDirectory(), "propsTest", true );
+ BooterDeserializer booterDeserializer = new BooterDeserializer( new FileInputStream( propsTest ) );
+ return booterDeserializer.getProviderConfiguration();
+ }
+
+ private ProviderConfiguration getProviderConfiguration()
+ throws IOException
+ {
+
+ File cwd = new File( "." );
+ DirectoryScannerParameters directoryScannerParameters =
+ new DirectoryScannerParameters( cwd, new ArrayList(), new ArrayList(), Boolean.TRUE );
+ ReporterConfiguration reporterConfiguration = new ReporterConfiguration( new ArrayList(), cwd, Boolean.TRUE );
+ TestRequest testSuiteDefinition =
+ new TestRequest( Arrays.asList( getSuiteXmlFileStrings()), getTestSourceDirectory(), aUserRequestedTest );
+ return new ProviderConfiguration( directoryScannerParameters, true, reporterConfiguration,
+ new TestArtifactInfo( "5.0", "ABC" ), testSuiteDefinition, new Properties(),
+ aTest );
+ }
+
+ private StartupConfiguration getTestStartupConfiguration( ClassLoaderConfiguration classLoaderConfiguration )
+ {
+ ClasspathConfiguration classpathConfiguration = new ClasspathConfiguration( true, true );
+ classpathConfiguration.addClasspathUrl( "CP1" );
+ classpathConfiguration.addClasspathUrl( "CP2" );
+ classpathConfiguration.addSurefireClasspathUrl( "SP1" );
+ classpathConfiguration.addSurefireClasspathUrl( "SP2" );
+ return new StartupConfiguration( "com.provider", classpathConfiguration, classLoaderConfiguration, false, false,
+ false );
+ }
+
+ private File getTestSourceDirectory()
+ {
+ return new File( "TestSrc" );
+ }
+
+ private Object[] getSuiteXmlFileStrings()
+ {
+ return new Object[]{ "A1", "A2" };
+ }
+}
Propchange: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerStartupConfigurationTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java?rev=1044121&r1=1044120&r2=1044121&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java (original)
+++ maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java Thu Dec 9 20:35:09 2010
@@ -54,7 +54,7 @@ public class SurefireReflector
private final Class reporterConfiguration;
- private final Class testSuiteDefinition;
+ private final Class testRequest;
private final Class testArtifactInfo;
@@ -86,7 +86,7 @@ public class SurefireReflector
try
{
reporterConfiguration = surefireClassLoader.loadClass( ReporterConfiguration.class.getName() );
- testSuiteDefinition = surefireClassLoader.loadClass( TestRequest.class.getName() );
+ testRequest = surefireClassLoader.loadClass( TestRequest.class.getName() );
testArtifactInfo = surefireClassLoader.loadClass( TestArtifactInfo.class.getName() );
testArtifactInfoAware = surefireClassLoader.loadClass( TestArtifactInfoAware.class.getName() );
directoryScannerParameters = surefireClassLoader.loadClass( DirectoryScannerParameters.class.getName() );
@@ -153,8 +153,8 @@ public class SurefireReflector
{
return null;
}
- Class[] arguments = { Object[].class, File.class, String.class };
- Constructor constructor = getConstructor( this.testSuiteDefinition, arguments );
+ Class[] arguments = { List.class, File.class, String.class };
+ Constructor constructor = getConstructor( this.testRequest, arguments );
return newInstance( constructor,
new Object[]{ suiteDefinition.getSuiteXmlFiles(), suiteDefinition.getTestSourceDirectory(),
suiteDefinition.getRequestedTest() } );
@@ -382,7 +382,7 @@ public class SurefireReflector
void setTestSuiteDefinition( Object o, TestRequest testSuiteDefinition1 )
{
final Object param = createTestSuiteDefinition( testSuiteDefinition1 );
- final Method setter = getMethod( o, "setTestRequest", new Class[]{ testSuiteDefinition } );
+ final Method setter = getMethod( o, "setTestRequest", new Class[]{ testRequest } );
invokeSetter( o, setter, param );
}
Modified: maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestRequest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestRequest.java?rev=1044121&r1=1044120&r2=1044121&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestRequest.java (original)
+++ maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestRequest.java Thu Dec 9 20:35:09 2010
@@ -20,6 +20,8 @@ package org.apache.maven.surefire.testse
*/
import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
/**
* Information about the requested test.
@@ -28,20 +30,20 @@ import java.io.File;
*/
public class TestRequest
{
- private final File[] suiteXmlFiles;
+ private final List suiteXmlFiles;
private final File testSourceDirectory;
private final String requestedTest;
- public TestRequest( Object[] suiteXmlFiles, File testSourceDirectory, String requestedTest )
+ public TestRequest( List suiteXmlFiles, File testSourceDirectory, String requestedTest )
{
this.suiteXmlFiles = createFiles( suiteXmlFiles );
this.testSourceDirectory = testSourceDirectory;
this.requestedTest = requestedTest;
}
- public File[] getSuiteXmlFiles()
+ public List getSuiteXmlFiles()
{
return suiteXmlFiles;
}
@@ -56,16 +58,16 @@ public class TestRequest
return requestedTest;
}
- private static File[] createFiles( Object[] suiteXmlFiles )
+ private static List createFiles( List suiteXmlFiles )
{
if ( suiteXmlFiles != null )
{
- File[] files = new File[suiteXmlFiles.length];
+ List files = new ArrayList();
Object element;
- for ( int i = 0; i < suiteXmlFiles.length; i++ )
+ for ( int i = 0; i < suiteXmlFiles.size(); i++ )
{
- element = suiteXmlFiles[i];
- files[i] = element instanceof String ? new File( (String) element ) : (File) element;
+ element = suiteXmlFiles.get(i);
+ files.add( element instanceof String ? new File( (String) element ) : (File) element);
}
return files;
}
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=1044121&r1=1044120&r2=1044121&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 Thu Dec 9 20:35:09 2010
@@ -27,12 +27,7 @@ import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Properties;
-import java.util.SortedMap;
-import java.util.TreeMap;
+import java.util.*;
/**
* Knows how to serialize and deserialize the booter configuration.
@@ -64,158 +59,55 @@ public class BooterDeserializer
public ProviderConfiguration deserialize()
throws IOException
{
- DirectoryScannerParameters dirScannerParams;
- boolean failIfNotests = false; // todo; check this out.
- SortedMap reportsMap = new TreeMap();
+ final File reportsDirectory = new File( properties.getProperty( REPORTSDIRECTORY ) );
+ final String testNgVersion = properties.getProperty( TESTARTIFACT_VERSION );
+ final String testArtifactClassifier = properties.getProperty( TESTARTIFACT_CLASSIFIER );
+ final Object testForFork = properties.getTypeDecoded( FORKTESTSET );
+ final String requestedTest = properties.getProperty( REQUESTEDTEST );
+ final File sourceDirectory =
+ (File) getParamValue( properties.getProperty( SOURCE_DIRECTORY ), File.class.getName() );
+
+ final List reports = properties.getStringList( REPORT_PROPERTY_PREFIX );
+ final List excludesList = properties.getStringList( EXCLUDES_PROPERTY_PREFIX );
+ final List includesList = properties.getStringList( INCLUDES_PROPERTY_PREFIX );
+
+ List testSuiteXmlFiles = properties.getStringList( TEST_SUITE_XML_FILES );
+ final File testClassesDirectory = properties.getFileProperty( TEST_CLASSES_DIRECTORY );
+
+ DirectoryScannerParameters dirScannerParams =
+ new DirectoryScannerParameters( testClassesDirectory, includesList, excludesList,
+ valueOf( properties.getBooleanProperty( FAILIFNOTESTS ) ) );
- boolean isTrimStackTrace = false;
- File reportsDirectory = null;
-
- String testNgVersion = null;
- String testNgClassifier = null;
- Object testForFork = null;
- String requestedTest = null;
- File sourceDirectory = null;
- Object[] testSuiteXmlFiles = null;
- SortedMap includes = new TreeMap();
- SortedMap excludes = new TreeMap();
- File testClassesDirectory = null;
-
- for ( Enumeration e = properties.propertyNames(); e.hasMoreElements(); )
- {
- String name = (String) e.nextElement();
-
- if ( name.startsWith( REPORT_PROPERTY_PREFIX ) && !isTypeHolderProperty( name ) )
- {
- String className = properties.getProperty( name );
- reportsMap.put( name, className );
- }
- else if ( name.startsWith( INCLUDES_PROPERTY_PREFIX ) && !isTypeHolderProperty( name ) )
- {
- String className = properties.getProperty( name );
- includes.put( name, className );
- }
- else if ( name.startsWith( EXCLUDES_PROPERTY_PREFIX ) && !isTypeHolderProperty( name ) )
- {
- String className = properties.getProperty( name );
- excludes.put( name, className );
- }
- else if ( FAILIFNOTESTS.equals( name ) )
- {
- failIfNotests = properties.getBooleanProperty( FAILIFNOTESTS );
- }
- else if ( ISTRIMSTACKTRACE.equals( name ) )
- {
- failIfNotests = properties.getBooleanProperty( ISTRIMSTACKTRACE );
- }
- else if ( REPORTSDIRECTORY.equals( name ) )
- {
- reportsDirectory = new File( properties.getProperty( REPORTSDIRECTORY ) );
- }
- else if ( TESTARTIFACT_VERSION.equals( name ) )
- {
- testNgVersion = properties.getProperty( TESTARTIFACT_VERSION );
- }
- else if ( TESTARTIFACT_CLASSIFIER.equals( name ) )
- {
- testNgClassifier = properties.getProperty( TESTARTIFACT_CLASSIFIER );
- }
- else if ( FORKTESTSET.equals( name ) )
- {
- testForFork = getTypeDecoded( properties.getProperty( FORKTESTSET ) );
- }
- else if ( REQUESTEDTEST.equals( name ) )
- {
- requestedTest = properties.getProperty( REQUESTEDTEST );
- }
- else if ( SOURCE_DIRECTORY.equals( name ) )
- {
- sourceDirectory =
- (File) getParamValue( properties.getProperty( SOURCE_DIRECTORY ), File.class.getName() );
- }
- else if ( TEST_CLASSES_DIRECTORY.equals( name ) )
- {
- testClassesDirectory =
- (File) getParamValue( properties.getProperty( TEST_CLASSES_DIRECTORY ), File.class.getName() );
- }
- else if ( TEST_SUITE_XML_FILES.equals( name ) )
- {
- testSuiteXmlFiles = constructParamObjects( properties.getProperty( TEST_SUITE_XML_FILES ), File.class );
- }
- }
-
- dirScannerParams = new DirectoryScannerParameters( testClassesDirectory, new ArrayList( includes.values() ),
- new ArrayList( excludes.values() ),
- valueOf( failIfNotests ) );
-
- TestArtifactInfo testNg = new TestArtifactInfo( testNgVersion, testNgClassifier );
+ TestArtifactInfo testNg = new TestArtifactInfo( testNgVersion, testArtifactClassifier );
TestRequest testSuiteDefinition = new TestRequest( testSuiteXmlFiles, sourceDirectory, requestedTest );
- List reports = new ArrayList( reportsMap.values() );
-
- ReporterConfiguration reporterConfiguration =
- new ReporterConfiguration( reports, reportsDirectory, valueOf( isTrimStackTrace ) );
+ ReporterConfiguration reporterConfiguration = new ReporterConfiguration( reports, reportsDirectory, valueOf(
+ properties.getBooleanProperty( ISTRIMSTACKTRACE ) ) );
- return new ProviderConfiguration( dirScannerParams, failIfNotests, reporterConfiguration, testNg,
- testSuiteDefinition, properties.getProperties(), testForFork );
+ return new ProviderConfiguration( dirScannerParams, properties.getBooleanProperty( 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
+ boolean enableAssertions = properties.getBooleanProperty( ENABLE_ASSERTIONS );
+ boolean childDelegation = properties.getBooleanProperty( CHILD_DELEGATION );
+ boolean useSystemClassLoader = properties.getBooleanProperty( USESYSTEMCLASSLOADER );
+ boolean useManifestOnlyJar = properties.getBooleanProperty( USEMANIFESTONLYJAR );
+ String providerConfiguration = properties.getProperty( PROVIDER_CONFIGURATION );
- 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 );
- }
- }
+ final List classpath = properties.getStringList( CLASSPATH_URL );
+ final List sureFireClasspath = properties.getStringList( SUREFIRE_CLASSPATHURL );
ClassLoaderConfiguration classLoaderConfiguration =
new ClassLoaderConfiguration( useSystemClassLoader, useManifestOnlyJar );
ClasspathConfiguration classpathConfiguration =
- new ClasspathConfiguration( classPathUrls, surefireClassPathUrls, enableAssertions, childDelegation );
+ new ClasspathConfiguration( classpath, sureFireClasspath, enableAssertions, childDelegation );
return StartupConfiguration.inForkedVm( providerConfiguration, classpathConfiguration,
classLoaderConfiguration );
@@ -226,11 +118,6 @@ public class BooterDeserializer
return aBoolean ? Boolean.TRUE : Boolean.FALSE;
}
- private boolean isTypeHolderProperty( String name )
- {
- return name.endsWith( PARAMS_SUFIX ) || name.endsWith( TYPES_SUFIX );
- }
-
private static List processStringList( String stringList )
{
String sl = stringList;
@@ -271,14 +158,6 @@ public class BooterDeserializer
return paramObjects;
}
- private static Object getTypeDecoded( String typeEncoded )
- {
- int typeSep = typeEncoded.indexOf( "|" );
- String type = typeEncoded.substring( 0, typeSep );
- String value = typeEncoded.substring( typeSep + 1 );
- return getParamValue( value, type );
- }
-
private static Object getParamValue( String param, String typeName )
{
if ( typeName.trim().length() == 0 )
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClassLoaderConfiguration.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClassLoaderConfiguration.java?rev=1044121&r1=1044120&r2=1044121&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClassLoaderConfiguration.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClassLoaderConfiguration.java Thu Dec 9 20:35:09 2010
@@ -43,6 +43,11 @@ public class ClassLoaderConfiguration
return useSystemClassLoader;
}
+ public boolean isUseManifestOnlyJar()
+ {
+ return useManifestOnlyJar;
+ }
+
public boolean isManifestOnlyJarRequestedAndUsable()
{
return isUseSystemClassLoader() && useManifestOnlyJar;
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClasspathConfiguration.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClasspathConfiguration.java?rev=1044121&r1=1044120&r2=1044121&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClasspathConfiguration.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClasspathConfiguration.java Thu Dec 9 20:35:09 2010
@@ -21,15 +21,14 @@ package org.apache.maven.surefire.booter
import org.apache.maven.surefire.util.NestedRuntimeException;
-import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
-import java.util.SortedMap;
/**
* Represents the classpaths for the BooterConfiguration.
@@ -43,9 +42,9 @@ import java.util.SortedMap;
public class ClasspathConfiguration
{
- private final Classpath classpathUrls = new Classpath();
+ private final Classpath classpathUrls;
- private final Classpath surefireClasspathUrls = new Classpath();
+ private final Classpath surefireClasspathUrls;
/**
* Whether to enable assertions or not (can be affected by the fork arguments, and the ability to do so based on the
@@ -59,30 +58,28 @@ public class ClasspathConfiguration
public ClasspathConfiguration( boolean enableAssertions, boolean childDelegation )
{
- this.enableAssertions = enableAssertions;
- this.childDelegation = childDelegation;
+ this( new ArrayList(), new ArrayList(), enableAssertions, childDelegation);
}
/*
* Reads the config from the supplied stream. Closes the stream.
*/
- public ClasspathConfiguration( SortedMap classPathUrls, SortedMap surefireClassPathUrls, boolean enableAssertions,
+ public ClasspathConfiguration( List classPathUrls, List surefireClassPathUrls, boolean enableAssertions,
boolean childDelegation )
- throws IOException
{
this.enableAssertions = enableAssertions;
this.childDelegation = childDelegation;
- for ( Iterator cpi = classPathUrls.keySet().iterator(); cpi.hasNext(); )
+ this.classpathUrls = new Classpath();
+ for ( Iterator cpi = classPathUrls.iterator(); cpi.hasNext(); )
{
- String url = (String) classPathUrls.get( cpi.next() );
- this.classpathUrls.addClassPathElementUrl( url );
+ this.classpathUrls.addClassPathElementUrl( (String) cpi.next() );
}
- for ( Iterator scpi = surefireClassPathUrls.keySet().iterator(); scpi.hasNext(); )
+ this.surefireClasspathUrls = new Classpath();
+ for ( Iterator scpi = surefireClassPathUrls.iterator(); scpi.hasNext(); )
{
- String url = (String) surefireClassPathUrls.get( scpi.next() );
- this.surefireClasspathUrls.addClassPathElementUrl( url );
+ this.surefireClasspathUrls.addClassPathElementUrl( (String) scpi.next() );
}
}
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/PropertiesWrapper.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/PropertiesWrapper.java?rev=1044121&r1=1044120&r2=1044121&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/PropertiesWrapper.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/PropertiesWrapper.java Thu Dec 9 20:35:09 2010
@@ -19,9 +19,9 @@ package org.apache.maven.surefire.booter
* under the License.
*/
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.Properties;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.util.*;
/**
* @author Kristian Rosenvold
@@ -32,6 +32,10 @@ public class PropertiesWrapper
public PropertiesWrapper( Properties properties )
{
+ if ( properties == null )
+ {
+ throw new IllegalStateException( "Properties cannot be null" );
+ }
this.properties = properties;
}
@@ -55,13 +59,181 @@ public class PropertiesWrapper
return properties.getProperty( key );
}
- public boolean getBooleanProperty(String propertyName){
+ public boolean getBooleanProperty( String propertyName )
+ {
final Boolean aBoolean = Boolean.valueOf( properties.getProperty( propertyName ) );
return aBoolean.booleanValue();
}
- public Enumeration propertyNames()
+ public File getFileProperty( String key )
+ {
+ final String property = getProperty( key );
+ if ( property == null )
+ {
+ return null;
+ }
+ return (File) getParamValue( property, File.class.getName() );
+ }
+
+ public List getListOfTypedObjects( String propertyPrefix )
+ {
+ String type;
+ String value;
+ List result = new ArrayList();
+ for ( int i = 0; ( type = getProperty( propertyPrefix + i + BooterConstants.TYPES_SUFIX ) ) != null; i++ )
+ {
+ value = getProperty( propertyPrefix + i + BooterConstants.PARAMS_SUFIX );
+ result.add( getParamValue( value, type ) );
+ }
+ return result;
+ }
+
+ public List getStringList( String propertyPrefix )
+ {
+ String value;
+ List result = new ArrayList();
+ // Whoa, C !!
+ for ( int i = 0; ( value = getProperty( propertyPrefix + i ) ) != null; i++ )
+ {
+ result.add( value );
+ }
+ return result;
+ }
+
+ /**
+ * Retrieves as single object that is persisted with type encoding
+ *
+ * @param key The key for the propery
+ * @return The object, of a supported type
+ */
+ public Object getTypeDecoded( String key )
+ {
+ String typeEncoded = getProperty( key );
+ if ( typeEncoded == null )
+ {
+ return null;
+ }
+ int typeSep = typeEncoded.indexOf( "|" );
+ String type = typeEncoded.substring( 0, typeSep );
+ String value = typeEncoded.substring( typeSep + 1 );
+ return getParamValue( value, type );
+ }
+
+ private Object getParamValue( String param, String typeName )
+ {
+ if ( typeName.trim().length() == 0 )
+ {
+ return null;
+ }
+ else if ( typeName.equals( String.class.getName() ) )
+ {
+ return param;
+ }
+ else if ( typeName.equals( File.class.getName() ) )
+ {
+ return new File( param );
+ }
+ else if ( typeName.equals( File[].class.getName() ) )
+ {
+ List stringList = processStringList( param );
+ File[] fileList = new File[stringList.size()];
+ for ( int j = 0; j < stringList.size(); j++ )
+ {
+ fileList[j] = new File( (String) stringList.get( j ) );
+ }
+ return fileList;
+ }
+ else if ( typeName.equals( ArrayList.class.getName() ) )
+ {
+ return processStringList( param );
+ }
+ else if ( typeName.equals( Boolean.class.getName() ) )
+ {
+ return Boolean.valueOf( param );
+ }
+ else if ( typeName.equals( Integer.class.getName() ) )
+ {
+ return Integer.valueOf( param );
+ }
+ else if ( typeName.equals( Properties.class.getName() ) )
+ {
+ final Properties result = new Properties();
+ try
+ {
+ ByteArrayInputStream bais = new ByteArrayInputStream( param.getBytes( "8859_1" ) );
+ result.load( bais );
+ }
+ catch ( Exception e )
+ {
+ throw new RuntimeException( "bug in property conversion", e );
+ }
+ return result;
+ }
+ else
+ {
+ // TODO: could attempt to construct with a String constructor if needed
+ throw new IllegalArgumentException( "Unknown parameter type: " + typeName );
+ }
+ }
+
+ private static List processStringList( String stringList )
{
- return properties.propertyNames();
+ String sl = stringList;
+
+ if ( sl.startsWith( "[" ) && sl.endsWith( "]" ) )
+ {
+ sl = sl.substring( 1, sl.length() - 1 );
+ }
+
+ List list = new ArrayList();
+
+ String[] stringArray = StringUtils.split( sl, "," );
+
+ for ( int i = 0; i < stringArray.length; i++ )
+ {
+ list.add( stringArray[i].trim() );
+ }
+ return list;
}
+
+ public void setProperty( String key, File file )
+ {
+ if ( file != null )
+ {
+ setProperty( key, file.toString() );
+ }
+ }
+ public void setProperty( String key, Boolean aBoolean )
+ {
+ if ( aBoolean != null )
+ {
+ setProperty( key, aBoolean.toString() );
+ }
+ }
+
+ public void setProperty( String key, String value )
+ {
+ if ( value != null )
+ {
+ properties.setProperty( key, value );
+ }
+ }
+
+ public void addList( List items, String propertyPrefix )
+ {
+ if ( items == null || items.size() == 0 )
+ {
+ return;
+ }
+ for ( int i = 0; i < items.size(); i++ )
+ {
+ Object item = items.get( i );
+ if ( item == null )
+ {
+ throw new NullPointerException( propertyPrefix + i + " has null value" );
+ }
+ properties.setProperty( propertyPrefix + i, item.toString() );
+ }
+ }
+
}
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=1044121&r1=1044120&r2=1044121&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 Thu Dec 9 20:35:09 2010
@@ -41,20 +41,20 @@ public class SurefireStarter
{
private static final int NO_TESTS = 254;
- private final ProviderConfiguration booterConfiguration;
+ private final ProviderConfiguration providerConfiguration;
- private final StartupConfiguration providerConfiguration;
+ private final StartupConfiguration startupConfiguration;
- public SurefireStarter( StartupConfiguration providerConfiguration, ProviderConfiguration booterConfiguration )
+ public SurefireStarter( StartupConfiguration startupConfiguration, ProviderConfiguration providerConfiguration )
{
- this.booterConfiguration = booterConfiguration;
this.providerConfiguration = providerConfiguration;
+ this.startupConfiguration = startupConfiguration;
}
public RunResult runSuitesInProcess( Object testSet )
throws SurefireExecutionException
{
- final StartupConfiguration starterConfiguration = providerConfiguration;
+ final StartupConfiguration starterConfiguration = startupConfiguration;
final ClasspathConfiguration classpathConfiguration = starterConfiguration.getClasspathConfiguration();
ClassLoader testsClassLoader = classpathConfiguration.createTestClassLoaderConditionallySystem(
@@ -73,7 +73,7 @@ public class SurefireStarter
ClassLoader testsClassLoader = createInProcessTestClassLoader();
final ClasspathConfiguration classpathConfiguration =
- providerConfiguration.getClasspathConfiguration();
+ startupConfiguration.getClasspathConfiguration();
ClassLoader surefireClassLoader = classpathConfiguration.createSurefireClassLoader( testsClassLoader );
@@ -85,12 +85,12 @@ public class SurefireStarter
{
ClassLoader testsClassLoader;
- final ClasspathConfiguration classpathConfiguration = providerConfiguration.getClasspathConfiguration();
+ final ClasspathConfiguration classpathConfiguration = startupConfiguration.getClasspathConfiguration();
String testClassPath = classpathConfiguration.getTestClasspath().getClassPathAsString();
System.setProperty( "surefire.test.class.path", testClassPath );
- if ( providerConfiguration.isManifestOnlyJarRequestedAndUsable() )
+ if ( startupConfiguration.isManifestOnlyJarRequestedAndUsable() )
{
testsClassLoader = getClass().getClassLoader(); // ClassLoader.getSystemClassLoader()
// SUREFIRE-459, trick the app under test into thinking its classpath was conventional
@@ -124,7 +124,7 @@ public class SurefireStarter
private RunResult invokeProvider( Object testSet, ClassLoader testsClassLoader, ClassLoader surefireClassLoader )
{
- ProviderFactory providerFactory = new ProviderFactory( providerConfiguration, booterConfiguration,
+ ProviderFactory providerFactory = new ProviderFactory( startupConfiguration, providerConfiguration,
surefireClassLoader );
final SurefireProvider provider = providerFactory.createProvider( testsClassLoader );
@@ -153,7 +153,7 @@ public class SurefireStarter
throws SurefireExecutionException
{
- if ( runCount.getCompletedCount() == 0 && booterConfiguration.isFailIfNoTests().booleanValue() )
+ if ( runCount.getCompletedCount() == 0 && providerConfiguration.isFailIfNoTests().booleanValue() )
{
return NO_TESTS;
}
Modified: maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java?rev=1044121&r1=1044120&r2=1044121&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java (original)
+++ maven/surefire/trunk/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java Thu Dec 9 20:35:09 2010
@@ -29,6 +29,7 @@ import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Properties;
/**
@@ -57,7 +58,7 @@ public class SurefireReflectorTest
Object foo = getFoo();
TestRequest testSuiteDefinition =
- new TestRequest( new Object[]{ new File("file1"),new File("file2") }, new File( "TestSOurce" ), "aUserRequestedTest" );
+ new TestRequest( Arrays.asList( new File[]{new File("file1"),new File("file2")} ), new File( "TestSOurce" ), "aUserRequestedTest" );
assertTrue( surefireReflector.isTestSuiteDefinitionAware( foo ) );
surefireReflector.setTestSuiteDefinition( foo, testSuiteDefinition );
assertTrue( isCalled( foo ).booleanValue() );
Modified: maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java?rev=1044121&r1=1044120&r2=1044121&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java Thu Dec 9 20:35:09 2010
@@ -95,7 +95,7 @@ public class TestNGProvider
boolean isTestNGXmlTestSuite( TestRequest testSuiteDefinition )
{
- return testSuiteDefinition.getSuiteXmlFiles() != null && testSuiteDefinition.getSuiteXmlFiles().length > 0 &&
+ return testSuiteDefinition.getSuiteXmlFiles() != null && testSuiteDefinition.getSuiteXmlFiles().size() > 0 &&
testSuiteDefinition.getRequestedTest() == null;
}
Modified: maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java?rev=1044121&r1=1044120&r2=1044121&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java Thu Dec 9 20:35:09 2010
@@ -45,7 +45,7 @@ import org.apache.maven.surefire.testset
public class TestNGXmlTestSuite
implements SurefireTestSuite
{
- private File[] suiteFiles;
+ private List suiteFiles;
private List suiteFilePaths;
@@ -66,7 +66,7 @@ public class TestNGXmlTestSuite
* Creates a testng testset to be configured by the specified
* xml file(s). The XML files are suite definitions files according to TestNG DTD.
*/
- public TestNGXmlTestSuite( File[] suiteFiles, String testSourceDirectory, String artifactVersion,
+ public TestNGXmlTestSuite( List suiteFiles, String testSourceDirectory, String artifactVersion,
String artifactClassifier, Properties confOptions, File reportsDirectory )
{
this.suiteFiles = suiteFiles;
@@ -105,7 +105,7 @@ public class TestNGXmlTestSuite
public int getNumTests()
{
- return suiteFiles.length;
+ return suiteFiles.size();
}
public List getClassesSkippedByValidation()
@@ -129,7 +129,7 @@ public class TestNGXmlTestSuite
this.testSets = new HashMap();
this.suiteFilePaths = new ArrayList();
- for ( Iterator i = Arrays.asList( suiteFiles ).iterator(); i.hasNext(); )
+ for ( Iterator i = suiteFiles.iterator(); i.hasNext(); )
{
File file = (File) i.next();
if ( !file.exists() || !file.isFile() )