You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2017/09/04 20:32:32 UTC
maven-surefire git commit: [SUREFIRE-1262] Working example,
though still with hardcoded values for IT. testOutputDirectory and
packages still need to be resolved.
Repository: maven-surefire
Updated Branches:
refs/heads/SUREFIRE-1262 14191e51d -> bac0fb56a
[SUREFIRE-1262] Working example, though still with hardcoded values for IT.
testOutputDirectory and packages still need to be resolved.
Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/bac0fb56
Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/bac0fb56
Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/bac0fb56
Branch: refs/heads/SUREFIRE-1262
Commit: bac0fb56a84bcf6af7b0fb8bd1e15be85378adcd
Parents: 14191e5
Author: rfscholte <rf...@apache.org>
Authored: Mon Sep 4 22:32:22 2017 +0200
Committer: rfscholte <rf...@apache.org>
Committed: Mon Sep 4 22:32:22 2017 +0200
----------------------------------------------------------------------
.../plugin/surefire/AbstractSurefireMojo.java | 100 ++++++++++---------
.../booterclient/ForkConfiguration.java | 76 ++++++++------
.../booterclient/ForkConfigurationTest.java | 10 +-
.../surefire/booter/ClasspathConfiguration.java | 13 ++-
4 files changed, 116 insertions(+), 83 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/bac0fb56/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
----------------------------------------------------------------------
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
index 357c653..abf6bb5 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
@@ -1,6 +1,41 @@
// CHECKSTYLE_OFF: FileLength|RegexpHeader
package org.apache.maven.plugin.surefire;
+import static java.lang.Thread.currentThread;
+import static org.apache.commons.lang3.JavaVersion.JAVA_1_7;
+import static org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS;
+import static org.apache.commons.lang3.SystemUtils.isJavaVersionAtLeast;
+import static org.apache.maven.shared.utils.StringUtils.capitalizeFirstLetter;
+import static org.apache.maven.shared.utils.StringUtils.isEmpty;
+import static org.apache.maven.shared.utils.StringUtils.isNotBlank;
+import static org.apache.maven.shared.utils.StringUtils.split;
+import static org.apache.maven.surefire.suite.RunResult.failure;
+import static org.apache.maven.surefire.suite.RunResult.noTestsRun;
+import static org.apache.maven.surefire.util.ReflectionUtils.invokeGetter;
+import static org.apache.maven.surefire.util.ReflectionUtils.invokeStaticMethod;
+import static org.apache.maven.surefire.util.ReflectionUtils.tryLoadClass;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Array;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.annotation.Nonnull;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -83,39 +118,6 @@ import org.codehaus.plexus.languages.java.jpms.LocationManager;
import org.codehaus.plexus.languages.java.jpms.ResolvePathsRequest;
import org.codehaus.plexus.languages.java.jpms.ResolvePathsResult;
-import javax.annotation.Nonnull;
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Array;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-import static java.lang.Thread.currentThread;
-import static org.apache.commons.lang3.JavaVersion.JAVA_1_7;
-import static org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS;
-import static org.apache.commons.lang3.SystemUtils.isJavaVersionAtLeast;
-import static org.apache.maven.shared.utils.StringUtils.capitalizeFirstLetter;
-import static org.apache.maven.shared.utils.StringUtils.isEmpty;
-import static org.apache.maven.shared.utils.StringUtils.isNotBlank;
-import static org.apache.maven.shared.utils.StringUtils.split;
-import static org.apache.maven.surefire.suite.RunResult.failure;
-import static org.apache.maven.surefire.suite.RunResult.noTestsRun;
-import static org.apache.maven.surefire.util.ReflectionUtils.invokeGetter;
-import static org.apache.maven.surefire.util.ReflectionUtils.invokeStaticMethod;
-import static org.apache.maven.surefire.util.ReflectionUtils.tryLoadClass;
-
/**
* Abstract base class for running tests using Surefire.
*
@@ -1094,7 +1096,7 @@ public abstract class AbstractSurefireMojo
createCopyAndReplaceForkNumPlaceholder( effectiveProperties, 1 ).copyToSystemProperties();
InPluginVMSurefireStarter surefireStarter =
- createInprocessStarter( provider, classLoaderConfiguration, runOrderParameters );
+ createInprocessStarter( provider, classLoaderConfiguration, runOrderParameters, scanResult );
return surefireStarter.runSuitesInProcess( scanResult );
}
else
@@ -1110,7 +1112,7 @@ public abstract class AbstractSurefireMojo
try
{
forkStarter = createForkStarter( provider, forkConfiguration, classLoaderConfiguration,
- runOrderParameters, getConsoleLogger() );
+ runOrderParameters, scanResult, getConsoleLogger() );
return forkStarter.run( effectiveProperties, scanResult );
}
@@ -1637,7 +1639,8 @@ public abstract class AbstractSurefireMojo
}
StartupConfiguration createStartupConfiguration( ProviderInfo provider,
- ClassLoaderConfiguration classLoaderConfiguration )
+ ClassLoaderConfiguration classLoaderConfiguration,
+ DefaultScanResult scanResult )
throws MojoExecutionException, MojoFailureException
{
try
@@ -1680,9 +1683,12 @@ public abstract class AbstractSurefireMojo
Classpath testClasspath = new Classpath( result.getClasspathElements() );
Classpath testModulepath = new Classpath( result.getModulepathElements().keySet() );
+ Collection<String> packages = null;
+
classpathConfiguration =
new ClasspathConfiguration( testClasspath, testModulepath, providerClasspath, inprocClassPath,
- moduleDescriptor, effectiveIsEnableAssertions(), isChildDelegation() );
+ moduleDescriptor, packages, effectiveIsEnableAssertions(),
+ isChildDelegation() );
getConsoleLogger().debug( testClasspath.getLogMessage( "test-classpath" ) );
getConsoleLogger().debug( testModulepath.getLogMessage( "test-modulepath" ) );
@@ -1966,11 +1972,13 @@ public abstract class AbstractSurefireMojo
}
private ForkStarter createForkStarter( ProviderInfo provider, ForkConfiguration forkConfiguration,
- ClassLoaderConfiguration classLoaderConfiguration,
- RunOrderParameters runOrderParameters, ConsoleLogger log )
+ ClassLoaderConfiguration classLoaderConfiguration,
+ RunOrderParameters runOrderParameters, DefaultScanResult scanResult,
+ ConsoleLogger log )
throws MojoExecutionException, MojoFailureException
{
- StartupConfiguration startupConfiguration = createStartupConfiguration( provider, classLoaderConfiguration );
+ StartupConfiguration startupConfiguration =
+ createStartupConfiguration( provider, classLoaderConfiguration, scanResult );
String configChecksum = getConfigChecksum();
StartupReportConfiguration startupReportConfiguration = getStartupReportConfiguration( configChecksum );
ProviderConfiguration providerConfiguration = createProviderConfiguration( runOrderParameters );
@@ -1979,16 +1987,18 @@ public abstract class AbstractSurefireMojo
}
private InPluginVMSurefireStarter createInprocessStarter( ProviderInfo provider,
- ClassLoaderConfiguration classLoaderConfiguration,
- RunOrderParameters runOrderParameters )
+ ClassLoaderConfiguration classLoaderConfiguration,
+ RunOrderParameters runOrderParameters,
+ DefaultScanResult scanResult )
throws MojoExecutionException, MojoFailureException
{
- StartupConfiguration startupConfiguration = createStartupConfiguration( provider, classLoaderConfiguration );
+ StartupConfiguration startupConfiguration =
+ createStartupConfiguration( provider, classLoaderConfiguration, scanResult );
String configChecksum = getConfigChecksum();
StartupReportConfiguration startupReportConfiguration = getStartupReportConfiguration( configChecksum );
ProviderConfiguration providerConfiguration = createProviderConfiguration( runOrderParameters );
- return new InPluginVMSurefireStarter( startupConfiguration, providerConfiguration,
- startupReportConfiguration, consoleLogger );
+ return new InPluginVMSurefireStarter( startupConfiguration, providerConfiguration, startupReportConfiguration,
+ consoleLogger );
}
protected ForkConfiguration getForkConfiguration()
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/bac0fb56/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkConfiguration.java
----------------------------------------------------------------------
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkConfiguration.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkConfiguration.java
index ce38be4..419c771 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkConfiguration.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkConfiguration.java
@@ -39,6 +39,7 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
+import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -155,6 +156,7 @@ public class ForkConfiguration
return createCommandLine( classPath,
testModulePath != null ? testModulePath.getClassPath() : null,
startupConfiguration.getClasspathConfiguration().getModuleDescriptor(),
+ startupConfiguration.getClasspathConfiguration().getPackages(),
startupConfiguration.getClassLoaderConfiguration().isManifestOnlyJarRequestedAndUsable(),
startupConfiguration.isShadefire(),
startupConfiguration.isProviderMainClass() ? startupConfiguration.getActualClassName()
@@ -162,7 +164,8 @@ public class ForkConfiguration
}
OutputStreamFlushableCommandline createCommandLine( List<String> classPath, List<String> modulePath,
- File moduleDescriptor, boolean useJar, boolean shadefire,
+ File moduleDescriptor, Collection<String> packages,
+ boolean useJar, boolean shadefire,
String providerThatHasMainMethod, int threadNumber )
throws SurefireBooterForkException
{
@@ -192,7 +195,8 @@ public class ForkConfiguration
{
try
{
- File argsFile = createArgsFile( moduleDescriptor, classPath, providerThatHasMainMethod );
+ File argsFile =
+ createArgsFile( moduleDescriptor, modulePath, classPath, packages, providerThatHasMainMethod );
cli.createArg().setValue( "@" + escapeToPlatformPath( argsFile.getAbsolutePath() ) );
}
@@ -341,7 +345,8 @@ public class ForkConfiguration
}
}
- private File createArgsFile( File moduleDescriptor, List<String> classPath, String startClassName )
+ private File createArgsFile( File moduleDescriptor, List<String> modulePath, List<String> classPath,
+ Collection<String> packages, String startClassName )
throws IOException
{
File file = File.createTempFile( "surefireargs", "", tempDirectory );
@@ -358,49 +363,56 @@ public class ForkConfiguration
final String ps = System.getProperty( "path.separator" );
writer = new BufferedWriter( new FileWriter( file ) );
-
- writer.write( "--module-path" );
- writer.newLine();
-
- for ( String cpEntry : classPath )
+
+ if ( modulePath != null && !modulePath.isEmpty() )
{
- writer.append( cpEntry ).append( ps );
+ writer.write( "--module-path" );
+ writer.newLine();
+
+ for ( String mp : modulePath )
+ {
+ writer.append( mp ).append( ps );
+ }
+ writer.newLine();
}
- writer.newLine();
-
+
+ if ( classPath != null && !classPath.isEmpty() )
+ {
+ writer.write( "--class-path" );
+ writer.newLine();
+
+ for ( String cp : classPath )
+ {
+ writer.append( cp ).append( ps );
+ }
+ writer.newLine();
+ }
+
writer.write( "--patch-module" );
writer.newLine();
-
- // @TODO use testClassesDirectory
- writer.append( moduleName ).append( '=' ).append( "target/classes" );
+ writer.append( moduleName ).append( '=' ).append( "target/test-classes" );
writer.newLine();
+
+ for ( String pckg : Collections.singletonList( "com.app" ) )
+ {
+ writer.write( "--add-exports" );
+ writer.newLine();
+ writer.append( moduleName ).append( '/' ).append( pckg ).append( '=' ).append( "ALL-UNNAMED" );
+ writer.newLine();
+ }
writer.write( "--add-modules" );
writer.newLine();
-
- writer.write( moduleName );
+ writer.append( moduleName );
writer.newLine();
-
+
writer.write( "--add-reads" );
writer.newLine();
-
- writer.append( moduleName ).append( '=' ).append( "surefire.booter" );
+ writer.append( moduleName ).append( '=' ).append( "ALL-UNNAMED" );
writer.newLine();
- // foreach package
- for ( String pckg : Collections.singletonList( moduleName ) )
- {
- writer.write( "--add-exports" );
- writer.newLine();
-
- writer.append( moduleName ).append( '/' ).append( pckg ).append( '=' ).append( "surefire.booter" );
- writer.newLine();
- }
-
- writer.write( "-m" );
+ writer.write( startClassName );
writer.newLine();
-
- writer.append( "surefire.booter" ).append( '/' ).append( startClassName );
}
finally
{
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/bac0fb56/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkConfigurationTest.java
----------------------------------------------------------------------
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkConfigurationTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkConfigurationTest.java
index 836f198..de1f012 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkConfigurationTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkConfigurationTest.java
@@ -45,7 +45,7 @@ public class ForkConfigurationTest
File cpElement = getTempClasspathFile();
Commandline cli =
- config.createCommandLine( Collections.singletonList( cpElement.getAbsolutePath() ), null, null, true, false, null, 1 );
+ config.createCommandLine( Collections.singletonList( cpElement.getAbsolutePath() ), null, null, null, true, false, null, 1 );
String line = StringUtils.join( cli.getCommandline(), " " );
assertTrue( line.contains( "-jar" ) );
@@ -59,7 +59,7 @@ public class ForkConfigurationTest
ForkConfiguration forkConfiguration = getForkConfiguration( "abc\ndef", null );
final Commandline commandLine =
- forkConfiguration.createCommandLine( Collections.singletonList( cpElement.getAbsolutePath() ), null, null, false, false,
+ forkConfiguration.createCommandLine( Collections.singletonList( cpElement.getAbsolutePath() ), null, null, null, false, false,
null, 1 );
assertTrue( commandLine.toString().contains( "abc def" ) );
}
@@ -76,7 +76,7 @@ public class ForkConfigurationTest
File cwd = new File( baseDir, "fork_${surefire.forkNumber}" );
ForkConfiguration config = getForkConfiguration( null, "java", cwd.getCanonicalFile() );
- Commandline commandLine = config.createCommandLine( Collections.<String>emptyList(), null, null, true, false, null, 1 );
+ Commandline commandLine = config.createCommandLine( Collections.<String>emptyList(), null, null, null, true, false, null, 1 );
File forkDirectory = new File( baseDir, "fork_1" );
forkDirectory.deleteOnExit();
@@ -101,7 +101,7 @@ public class ForkConfigurationTest
try
{
- config.createCommandLine( Collections.<String>emptyList(), null, null, true, false, null, 1 );
+ config.createCommandLine( Collections.<String>emptyList(), null, null, null, true, false, null, 1 );
}
catch ( SurefireBooterForkException sbfe )
{
@@ -130,7 +130,7 @@ public class ForkConfigurationTest
try
{
- config.createCommandLine( Collections.<String>emptyList(), null, null, true, false, null, 1 );
+ config.createCommandLine( Collections.<String>emptyList(), null, null, null, true, false, null, 1 );
}
catch ( SurefireBooterForkException sbfe )
{
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/bac0fb56/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClasspathConfiguration.java
----------------------------------------------------------------------
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClasspathConfiguration.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClasspathConfiguration.java
index 397955c..74c76b3 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClasspathConfiguration.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClasspathConfiguration.java
@@ -20,6 +20,7 @@ package org.apache.maven.surefire.booter;
*/
import java.io.File;
+import java.util.Collection;
/**
* Represents the classpaths for the BooterConfiguration.
@@ -46,6 +47,8 @@ public class ClasspathConfiguration
private final Classpath modulepathUrls;
private final File moduleDescriptor;
+
+ private final Collection<String> packages;
/**
* The surefire classpath to use when invoking in-process with the plugin
@@ -84,10 +87,12 @@ public class ClasspathConfiguration
this.surefireClasspathUrls = surefireClassPathUrls;
this.moduleDescriptor = null;
this.modulepathUrls = null;
+ this.packages = null;
}
public ClasspathConfiguration( Classpath testClasspath, Classpath testModulepath, Classpath surefireClassPathUrls,
- Classpath inprocClasspath, File moduleDescriptor, boolean enableAssertions,
+ Classpath inprocClasspath, File moduleDescriptor, Collection<String> packages,
+ boolean enableAssertions,
boolean childDelegation )
{
this.enableAssertions = enableAssertions;
@@ -97,6 +102,7 @@ public class ClasspathConfiguration
this.modulepathUrls = testModulepath;
this.surefireClasspathUrls = surefireClassPathUrls;
this.moduleDescriptor = moduleDescriptor;
+ this.packages = packages;
}
public ClassLoader createMergedClassLoader()
@@ -142,4 +148,9 @@ public class ClasspathConfiguration
{
return childDelegation;
}
+
+ public Collection<String> getPackages()
+ {
+ return packages;
+ }
}