Repository: maven-surefire Updated Branches: refs/heads/master 7b9815c8b -> c594ac4c4
added unit test and jsr305 @Nonnull/@Nullable for SUREFIRE-1262 Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/c594ac4c Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/c594ac4c Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/c594ac4c Branch: refs/heads/master Commit: c594ac4c4278e109e2937d2581efc363d7002f75 Parents: 7b9815c Author: Tibor17 <tibordig...@apache.org> Authored: Thu Nov 23 03:02:15 2017 +0100 Committer: Tibor17 <tibordig...@apache.org> Committed: Thu Nov 23 03:02:15 2017 +0100 ---------------------------------------------------------------------- .../plugin/surefire/AbstractSurefireMojo.java | 52 ++++---- .../maven/plugin/surefire/ProviderInfo.java | 1 + .../surefire/SurefireDependencyResolver.java | 3 +- .../ClasspathForkConfiguration.java | 17 ++- .../booterclient/DefaultForkConfiguration.java | 10 +- .../booterclient/ForkConfiguration.java | 2 +- .../surefire/booterclient/ForkStarter.java | 3 +- .../JarManifestForkConfiguration.java | 16 ++- .../ModularClasspathForkConfiguration.java | 26 ++-- .../DefaultForkConfigurationTest.java | 41 +++--- .../ModularClasspathForkConfigurationTest.java | 126 +++++++++++++++++++ .../apache/maven/surefire/JUnit4SuiteTest.java | 4 +- pom.xml | 5 +- surefire-booter/pom.xml | 5 + .../booter/AbstractPathConfiguration.java | 6 +- .../apache/maven/surefire/booter/Classpath.java | 24 ++-- .../surefire/booter/ClasspathConfiguration.java | 9 +- .../maven/surefire/booter/ModularClasspath.java | 10 +- .../booter/ModularClasspathConfiguration.java | 8 +- .../surefire/booter/StartupConfiguration.java | 7 +- 20 files changed, 280 insertions(+), 95 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/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 16b59ca..7beea89 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 @@ -854,6 +854,7 @@ public abstract class AbstractSurefireMojo } } + @Nonnull protected final PluginConsoleLogger getConsoleLogger() { if ( consoleLogger == null ) @@ -876,6 +877,7 @@ public abstract class AbstractSurefireMojo toolchain = getToolchain(); } + @Nonnull private DefaultScanResult scanForTestClasses() throws MojoFailureException { @@ -960,7 +962,7 @@ public abstract class AbstractSurefireMojo return true; } - private void executeAfterPreconditionsChecked( DefaultScanResult scanResult ) + private void executeAfterPreconditionsChecked( @Nonnull DefaultScanResult scanResult ) throws MojoExecutionException, MojoFailureException { List<ProviderInfo> providers = createProviders(); @@ -1076,7 +1078,7 @@ public abstract class AbstractSurefireMojo } if ( getConsoleLogger().isDebugEnabled() ) { - showToLog( result, getConsoleLogger(), "system property" ); + showToLog( result, getConsoleLogger() ); } return result; } @@ -1100,16 +1102,17 @@ public abstract class AbstractSurefireMojo return intersection; } - private void showToLog( SurefireProperties props, ConsoleLogger log, String setting ) + private void showToLog( SurefireProperties props, ConsoleLogger log ) { for ( Object key : props.getStringKeySet() ) { String value = props.getProperty( (String) key ); - log.debug( "Setting " + setting + " [" + key + "]=[" + value + "]" ); + log.debug( "Setting system property [" + key + "]=[" + value + "]" ); } } - private RunResult executeProvider( ProviderInfo provider, DefaultScanResult scanResult ) + @Nonnull + private RunResult executeProvider( @Nonnull ProviderInfo provider, @Nonnull DefaultScanResult scanResult ) throws MojoExecutionException, MojoFailureException, SurefireExecutionException, SurefireBooterForkException, TestSetFailedException { @@ -1676,9 +1679,9 @@ public abstract class AbstractSurefireMojo return new File( getBasedir(), ".surefire-" + configurationHash ); } - private StartupConfiguration createStartupConfiguration( ProviderInfo provider, boolean isInprocess, - ClassLoaderConfiguration classLoaderConfiguration, - DefaultScanResult scanResult ) + private StartupConfiguration createStartupConfiguration( @Nonnull ProviderInfo provider, boolean isInprocess, + @Nonnull ClassLoaderConfiguration classLoaderConfiguration, + @Nonnull DefaultScanResult scanResult ) throws MojoExecutionException, MojoFailureException { try @@ -1725,8 +1728,8 @@ public abstract class AbstractSurefireMojo } private StartupConfiguration newStartupConfigForNonModularClasspath( - ClassLoaderConfiguration classLoaderConfiguration, Classpath providerClasspath, Classpath inprocClasspath, - String providerName ) + @Nonnull ClassLoaderConfiguration classLoaderConfiguration, @Nonnull Classpath providerClasspath, + @Nonnull Classpath inprocClasspath, @Nonnull String providerName ) throws MojoExecutionException, MojoFailureException, InvalidVersionSpecificationException, AbstractArtifactResolutionException { @@ -1744,9 +1747,9 @@ public abstract class AbstractSurefireMojo false ); } - private StartupConfiguration newStartupConfigForModularClasspath( ClassLoaderConfiguration classLoaderConfiguration, - Classpath providerClasspath, String providerName, - File moduleDescriptor, DefaultScanResult scanResult ) + private StartupConfiguration newStartupConfigForModularClasspath( + @Nonnull ClassLoaderConfiguration classLoaderConfiguration, @Nonnull Classpath providerClasspath, + @Nonnull String providerName, @Nonnull File moduleDescriptor, @Nonnull DefaultScanResult scanResult ) throws MojoExecutionException, MojoFailureException, InvalidVersionSpecificationException, AbstractArtifactResolutionException, IOException { @@ -2024,10 +2027,10 @@ public abstract class AbstractSurefireMojo return getProjectArtifactMap().get( "junit:junit-dep" ); } - private ForkStarter createForkStarter( ProviderInfo provider, ForkConfiguration forkConfiguration, - ClassLoaderConfiguration classLoaderConfiguration, - RunOrderParameters runOrderParameters, ConsoleLogger log, - DefaultScanResult scanResult ) + private ForkStarter createForkStarter( @Nonnull ProviderInfo provider, @Nonnull ForkConfiguration forkConfiguration, + @Nonnull ClassLoaderConfiguration classLoaderConfiguration, + @Nonnull RunOrderParameters runOrderParameters, @Nonnull ConsoleLogger log, + @Nonnull DefaultScanResult scanResult ) throws MojoExecutionException, MojoFailureException { StartupConfiguration startupConfiguration = @@ -2039,10 +2042,10 @@ public abstract class AbstractSurefireMojo getForkedProcessTimeoutInSeconds(), startupReportConfiguration, log ); } - private InPluginVMSurefireStarter createInprocessStarter( ProviderInfo provider, - ClassLoaderConfiguration classLoaderConfiguration, - RunOrderParameters runOrderParameters, - DefaultScanResult scanResult ) + private InPluginVMSurefireStarter createInprocessStarter( @Nonnull ProviderInfo provider, + @Nonnull ClassLoaderConfiguration classLoaderConfiguration, + @Nonnull RunOrderParameters runOrderParameters, + @Nonnull DefaultScanResult scanResult ) throws MojoExecutionException, MojoFailureException { StartupConfiguration startupConfiguration = @@ -2054,6 +2057,7 @@ public abstract class AbstractSurefireMojo getConsoleLogger() ); } + @Nonnull private ForkConfiguration getForkConfiguration() throws MojoFailureException { File tmpDir = getSurefireTempDir(); @@ -2359,6 +2363,7 @@ public abstract class AbstractSurefireMojo return false; } + @Nonnull protected ClassLoaderConfiguration getClassLoaderConfiguration() { return isForking() @@ -2776,6 +2781,7 @@ public abstract class AbstractSurefireMojo } @Override + @Nonnull public Classpath getProviderClasspath() throws ArtifactResolutionException, ArtifactNotFoundException { @@ -2806,6 +2812,7 @@ public abstract class AbstractSurefireMojo } @Override + @Nonnull public Classpath getProviderClasspath() throws ArtifactResolutionException, ArtifactNotFoundException { @@ -2848,6 +2855,7 @@ public abstract class AbstractSurefireMojo } @Override + @Nonnull public Classpath getProviderClasspath() throws ArtifactResolutionException, ArtifactNotFoundException { @@ -2897,6 +2905,7 @@ public abstract class AbstractSurefireMojo } @Override + @Nonnull public Classpath getProviderClasspath() throws ArtifactResolutionException, ArtifactNotFoundException { @@ -2946,6 +2955,7 @@ public abstract class AbstractSurefireMojo } @Override + @Nonnull public Classpath getProviderClasspath() throws ArtifactResolutionException, ArtifactNotFoundException { http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/ProviderInfo.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/ProviderInfo.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/ProviderInfo.java index 50de7ea..a3fb88e 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/ProviderInfo.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/ProviderInfo.java @@ -36,6 +36,7 @@ public interface ProviderInfo boolean isApplicable(); + @Nonnull Classpath getProviderClasspath() throws ArtifactResolutionException, ArtifactNotFoundException; http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.java index 12a1239..a43c4de 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.java @@ -111,7 +111,7 @@ public class SurefireDependencyResolver } - public ArtifactResolutionResult resolveArtifact( @Nullable Artifact filteredArtifact, Artifact providerArtifact ) + private ArtifactResolutionResult resolveArtifact( Artifact filteredArtifact, Artifact providerArtifact ) throws ArtifactResolutionException, ArtifactNotFoundException { ArtifactFilter filter = null; @@ -128,6 +128,7 @@ public class SurefireDependencyResolver filter ); } + @Nonnull public Classpath getProviderClasspath( String provider, String version, Artifact filteredArtifact ) throws ArtifactNotFoundException, ArtifactResolutionException { http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ClasspathForkConfiguration.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ClasspathForkConfiguration.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ClasspathForkConfiguration.java index 28b966e..f87b473 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ClasspathForkConfiguration.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ClasspathForkConfiguration.java @@ -25,6 +25,8 @@ import org.apache.maven.surefire.booter.Classpath; import org.apache.maven.surefire.booter.StartupConfiguration; import org.apache.maven.surefire.booter.SurefireBooterForkException; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.io.File; import java.util.Map; import java.util.Properties; @@ -39,18 +41,21 @@ public final class ClasspathForkConfiguration extends AbstractClasspathForkConfiguration { @SuppressWarnings( "checkstyle:parameternumber" ) - public ClasspathForkConfiguration( Classpath bootClasspath, File tempDirectory, String debugLine, - File workingDirectory, Properties modelProperties, String argLine, - Map<String, String> environmentVariables, boolean debug, int forkCount, - boolean reuseForks, Platform pluginPlatform, ConsoleLogger log ) + public ClasspathForkConfiguration( @Nonnull Classpath bootClasspath, @Nonnull File tempDirectory, + @Nullable String debugLine, @Nonnull File workingDirectory, + @Nonnull Properties modelProperties, @Nullable String argLine, + @Nonnull Map<String, String> environmentVariables, boolean debug, int forkCount, + boolean reuseForks, @Nonnull Platform pluginPlatform, + @Nonnull ConsoleLogger log ) { super( bootClasspath, tempDirectory, debugLine, workingDirectory, modelProperties, argLine, environmentVariables, debug, forkCount, reuseForks, pluginPlatform, log ); } @Override - protected void resolveClasspath( OutputStreamFlushableCommandline cli, String booterThatHasMainMethod, - StartupConfiguration config ) + protected void resolveClasspath( @Nonnull OutputStreamFlushableCommandline cli, + @Nonnull String booterThatHasMainMethod, + @Nonnull StartupConfiguration config ) throws SurefireBooterForkException { cli.addEnvironment( "CLASSPATH", join( toCompleteClasspath( config ).iterator(), File.pathSeparator ) ); http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfiguration.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfiguration.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfiguration.java index 8c3a9e6..c35d01c 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfiguration.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfiguration.java @@ -93,8 +93,9 @@ public abstract class DefaultForkConfiguration this.log = log; } - protected abstract void resolveClasspath( OutputStreamFlushableCommandline cli, String booterThatHasMainMethod, - StartupConfiguration config ) + protected abstract void resolveClasspath( @Nonnull OutputStreamFlushableCommandline cli, + @Nonnull String booterThatHasMainMethod, + @Nonnull StartupConfiguration config ) throws SurefireBooterForkException; @Nonnull @@ -144,6 +145,7 @@ public abstract class DefaultForkConfiguration return cli; } + @Nonnull protected List<String> toCompleteClasspath( StartupConfiguration conf ) throws SurefireBooterForkException { AbstractPathConfiguration pathConfig = conf.getClasspathConfiguration(); @@ -152,11 +154,9 @@ public abstract class DefaultForkConfiguration throw new SurefireBooterForkException( "Could not find class-path config nor modular class-path either." ); } - //todo this could probably be simplified further - Classpath bootClasspath = conf.isProviderMainClass() ? pathConfig.getProviderClasspath() : getBooterClasspath(); + Classpath bootClasspath = getBooterClasspath(); Classpath testClasspath = pathConfig.getTestClasspath(); Classpath providerClasspath = pathConfig.getProviderClasspath(); - Classpath completeClasspath = join( join( bootClasspath, testClasspath ), providerClasspath ); log.debug( completeClasspath.getLogMessage( "boot classpath:" ) ); http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/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 1ec0fc3..af23f61 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 @@ -37,7 +37,7 @@ import java.util.Properties; */ public abstract class ForkConfiguration { - public static final String DEFAULT_PROVIDER_CLASS = ForkedBooter.class.getName(); + static final String DEFAULT_PROVIDER_CLASS = ForkedBooter.class.getName(); @Nonnull public abstract File getTempDirectory(); @Nullable protected abstract String getDebugLine(); http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java index a7c0311..2f48def 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java @@ -50,6 +50,7 @@ import org.apache.maven.surefire.suite.RunResult; import org.apache.maven.surefire.testset.TestRequest; import org.apache.maven.surefire.util.DefaultScanResult; +import javax.annotation.Nonnull; import java.io.Closeable; import java.io.File; import java.io.IOException; @@ -232,7 +233,7 @@ public class ForkStarter triggerTimeoutCheck(); } - public RunResult run( SurefireProperties effectiveSystemProperties, DefaultScanResult scanResult ) + public RunResult run( @Nonnull SurefireProperties effectiveSystemProperties, @Nonnull DefaultScanResult scanResult ) throws SurefireBooterForkException, SurefireExecutionException { try http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java index 0c19cdf..3bcf7a3 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java @@ -26,6 +26,7 @@ import org.apache.maven.surefire.booter.StartupConfiguration; import org.apache.maven.surefire.booter.SurefireBooterForkException; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -47,18 +48,21 @@ public final class JarManifestForkConfiguration extends AbstractClasspathForkConfiguration { @SuppressWarnings( "checkstyle:parameternumber" ) - public JarManifestForkConfiguration( Classpath bootClasspath, File tempDirectory, String debugLine, - File workingDirectory, Properties modelProperties, String argLine, - Map<String, String> environmentVariables, boolean debug, int forkCount, - boolean reuseForks, Platform pluginPlatform, ConsoleLogger log ) + public JarManifestForkConfiguration( @Nonnull Classpath bootClasspath, @Nonnull File tempDirectory, + @Nullable String debugLine, @Nonnull File workingDirectory, + @Nonnull Properties modelProperties, @Nullable String argLine, + @Nonnull Map<String, String> environmentVariables, boolean debug, + int forkCount, boolean reuseForks, @Nonnull Platform pluginPlatform, + @Nonnull ConsoleLogger log ) { super( bootClasspath, tempDirectory, debugLine, workingDirectory, modelProperties, argLine, environmentVariables, debug, forkCount, reuseForks, pluginPlatform, log ); } @Override - protected void resolveClasspath( OutputStreamFlushableCommandline cli, String booterThatHasMainMethod, - StartupConfiguration config ) + protected void resolveClasspath( @Nonnull OutputStreamFlushableCommandline cli, + @Nonnull String booterThatHasMainMethod, + @Nonnull StartupConfiguration config ) throws SurefireBooterForkException { try http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java index 2b47c03..b6130c5 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java @@ -31,6 +31,7 @@ import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ModuleVisitor; +import javax.annotation.Nonnegative; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.io.BufferedWriter; @@ -65,7 +66,7 @@ public class ModularClasspathForkConfiguration @Nullable String argLine, @Nonnull Map<String, String> environmentVariables, boolean debug, - int forkCount, + @Nonnegative int forkCount, boolean reuseForks, @Nonnull Platform pluginPlatform, @Nonnull ConsoleLogger log ) @@ -75,8 +76,8 @@ public class ModularClasspathForkConfiguration } @Override - protected void resolveClasspath( OutputStreamFlushableCommandline cli, String startClass, - StartupConfiguration config ) + protected void resolveClasspath( @Nonnull OutputStreamFlushableCommandline cli, @Nonnull String startClass, + @Nonnull StartupConfiguration config ) throws SurefireBooterForkException { try @@ -96,7 +97,6 @@ public class ModularClasspathForkConfiguration File argsFile = createArgsFile( descriptor, modulePath, classpath, packages, patchFile, startClass ); - //todo what if path have spaces cli.createArg().setValue( "@" + escapeToPlatformPath( argsFile.getAbsolutePath() ) ); } catch ( IOException e ) @@ -105,8 +105,10 @@ public class ModularClasspathForkConfiguration } } - File createArgsFile( File moduleDescriptor, List<String> modulePath, List<String> classPath, - Collection<String> packages, File patchFile, String startClassName ) + @Nonnull + File createArgsFile( @Nonnull File moduleDescriptor, @Nonnull List<String> modulePath, + @Nonnull List<String> classPath, @Nonnull Collection<String> packages, + @Nonnull File patchFile, @Nonnull String startClassName ) throws IOException { File surefireArgs = createTempFile( "surefireargs", "", getTempDirectory() ); @@ -120,7 +122,7 @@ public class ModularClasspathForkConfiguration { writer = new BufferedWriter( new FileWriter( surefireArgs ) ); - if ( modulePath != null && !modulePath.isEmpty() ) + if ( !modulePath.isEmpty() ) { writer.write( "--module-path" ); writer.newLine(); @@ -137,7 +139,7 @@ public class ModularClasspathForkConfiguration writer.newLine(); } - if ( classPath != null && !classPath.isEmpty() ) + if ( !classPath.isEmpty() ) { writer.write( "--class-path" ); writer.newLine(); @@ -153,7 +155,6 @@ public class ModularClasspathForkConfiguration writer.newLine(); } - //todo may return null final String moduleName = toModuleName( moduleDescriptor ); writer.write( "--patch-module" ); @@ -206,11 +207,12 @@ public class ModularClasspathForkConfiguration return surefireArgs; } - private static String toModuleName( File moduleDescriptor ) throws IOException + @Nonnull + String toModuleName( @Nonnull File moduleDescriptor ) throws IOException { - if ( moduleDescriptor == null || !moduleDescriptor.isFile() ) + if ( !moduleDescriptor.isFile() ) { - return null; + throw new IOException( "No such Jigsaw module-descriptor exists " + moduleDescriptor.getAbsolutePath() ); } final StringBuilder sb = new StringBuilder(); http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfigurationTest.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfigurationTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfigurationTest.java index 092c655..338a46c 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfigurationTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfigurationTest.java @@ -32,6 +32,7 @@ import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; +import javax.annotation.Nonnull; import java.io.File; import java.util.HashMap; import java.util.Map; @@ -96,8 +97,9 @@ public class DefaultForkConfigurationTest { @Override - protected void resolveClasspath( OutputStreamFlushableCommandline cli, String booterThatHasMainMethod, - StartupConfiguration config ) throws SurefireBooterForkException + protected void resolveClasspath( @Nonnull OutputStreamFlushableCommandline cli, + @Nonnull String booterThatHasMainMethod, + @Nonnull StartupConfiguration config ) throws SurefireBooterForkException { } @@ -120,8 +122,9 @@ public class DefaultForkConfigurationTest { @Override - protected void resolveClasspath( OutputStreamFlushableCommandline cli, String booterThatHasMainMethod, - StartupConfiguration config ) throws SurefireBooterForkException + protected void resolveClasspath( @Nonnull OutputStreamFlushableCommandline cli, + @Nonnull String booterThatHasMainMethod, + @Nonnull StartupConfiguration config ) throws SurefireBooterForkException { } @@ -144,8 +147,9 @@ public class DefaultForkConfigurationTest { @Override - protected void resolveClasspath( OutputStreamFlushableCommandline cli, String booterThatHasMainMethod, - StartupConfiguration config ) throws SurefireBooterForkException + protected void resolveClasspath( @Nonnull OutputStreamFlushableCommandline cli, + @Nonnull String booterThatHasMainMethod, + @Nonnull StartupConfiguration config ) throws SurefireBooterForkException { } @@ -168,8 +172,9 @@ public class DefaultForkConfigurationTest { @Override - protected void resolveClasspath( OutputStreamFlushableCommandline cli, String booterThatHasMainMethod, - StartupConfiguration config ) throws SurefireBooterForkException + protected void resolveClasspath( @Nonnull OutputStreamFlushableCommandline cli, + @Nonnull String booterThatHasMainMethod, + @Nonnull StartupConfiguration config ) throws SurefireBooterForkException { } @@ -193,8 +198,9 @@ public class DefaultForkConfigurationTest { @Override - protected void resolveClasspath( OutputStreamFlushableCommandline cli, String booterThatHasMainMethod, - StartupConfiguration config ) throws SurefireBooterForkException + protected void resolveClasspath( @Nonnull OutputStreamFlushableCommandline cli, + @Nonnull String booterThatHasMainMethod, + @Nonnull StartupConfiguration config ) throws SurefireBooterForkException { } @@ -217,8 +223,9 @@ public class DefaultForkConfigurationTest { @Override - protected void resolveClasspath( OutputStreamFlushableCommandline cli, String booterThatHasMainMethod, - StartupConfiguration config ) throws SurefireBooterForkException + protected void resolveClasspath( @Nonnull OutputStreamFlushableCommandline cli, + @Nonnull String booterThatHasMainMethod, + @Nonnull StartupConfiguration config ) throws SurefireBooterForkException { } @@ -241,8 +248,9 @@ public class DefaultForkConfigurationTest { @Override - protected void resolveClasspath( OutputStreamFlushableCommandline cli, String booterThatHasMainMethod, - StartupConfiguration config ) throws SurefireBooterForkException + protected void resolveClasspath( @Nonnull OutputStreamFlushableCommandline cli, + @Nonnull String booterThatHasMainMethod, + @Nonnull StartupConfiguration config ) throws SurefireBooterForkException { } @@ -265,8 +273,9 @@ public class DefaultForkConfigurationTest { @Override - protected void resolveClasspath( OutputStreamFlushableCommandline cli, String booterThatHasMainMethod, - StartupConfiguration config ) throws SurefireBooterForkException + protected void resolveClasspath( @Nonnull OutputStreamFlushableCommandline cli, + @Nonnull String booterThatHasMainMethod, + @Nonnull StartupConfiguration config ) throws SurefireBooterForkException { } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfigurationTest.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfigurationTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfigurationTest.java new file mode 100644 index 0000000..cb999d3 --- /dev/null +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfigurationTest.java @@ -0,0 +1,126 @@ +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 org.apache.maven.plugin.surefire.booterclient.lazytestprovider.OutputStreamFlushableCommandline; +import org.apache.maven.plugin.surefire.log.api.NullConsoleLogger; +import org.apache.maven.surefire.booter.Classpath; +import org.apache.maven.surefire.booter.ForkedBooter; +import org.apache.maven.surefire.booter.ModularClasspath; +import org.apache.maven.surefire.booter.ModularClasspathConfiguration; +import org.apache.maven.surefire.booter.StartupConfiguration; +import org.junit.Test; + +import javax.annotation.Nonnull; +import java.io.File; +import java.io.IOException; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Properties; + +import static java.io.File.separator; +import static java.io.File.pathSeparator; +import static java.nio.file.Files.readAllLines; +import static java.util.Arrays.asList; +import static java.util.Collections.singleton; +import static org.fest.assertions.Assertions.assertThat; + +/** + * @author <a href="mailto:tibordig...@apache.org">Tibor Digana (tibor17)</a> + * @since 2.21.0.Jigsaw + */ +public class ModularClasspathForkConfigurationTest +{ + @Test + public void shouldCreateModularArgsFile() throws Exception + { + Classpath booter = new Classpath( asList( "booter.jar", "non-modular.jar" ) ); + File target = new File( "target" ).getCanonicalFile(); + File tmp = new File( target, "surefire" ); + tmp.mkdirs(); + File pwd = new File( "." ).getCanonicalFile(); + + ModularClasspathForkConfiguration config = new ModularClasspathForkConfiguration( booter, tmp, "", pwd, + new Properties(), "", new HashMap<String, String>(), true, 1, true, new Platform(), + new NullConsoleLogger() ) + { + @Nonnull + @Override + String toModuleName( @Nonnull File moduleDescriptor ) throws IOException + { + return "abc"; + } + }; + + File patchFile = new File( "target" + separator + "test-classes" ); + File descriptor = new File( tmp, "module-info.class" ); + descriptor.createNewFile(); + List<String> modulePath = asList( "modular.jar", "target/classes" ); + List<String> classPath = asList( "booter.jar", "non-modular.jar", patchFile.getPath() ); + Collection<String> packages = singleton( "org.apache.abc" ); + String startClassName = ForkedBooter.class.getName(); + + File jigsawArgsFile = + config.createArgsFile( descriptor, modulePath, classPath, packages, patchFile, startClassName ); + + assertThat( jigsawArgsFile ).isNotNull(); + List<String> argsFileLines = readAllLines( jigsawArgsFile.toPath() ); + assertThat( argsFileLines ).hasSize( 13 ); + assertThat( argsFileLines.get( 0 ) ).isEqualTo( "--module-path" ); + assertThat( argsFileLines.get( 1 ) ).isEqualTo( "modular.jar" + pathSeparator + "target/classes" ); + assertThat( argsFileLines.get( 2 ) ).isEqualTo( "--class-path" ); + assertThat( argsFileLines.get( 3 ) ) + .isEqualTo( "booter.jar" + pathSeparator + "non-modular.jar" + pathSeparator + patchFile.getPath() ); + assertThat( argsFileLines.get( 4 ) ).isEqualTo( "--patch-module" ); + assertThat( argsFileLines.get( 5 ) ).isEqualTo( "abc=" + patchFile.getPath() ); + assertThat( argsFileLines.get( 6 ) ).isEqualTo( "--add-exports" ); + assertThat( argsFileLines.get( 7 ) ).isEqualTo( "abc/org.apache.abc=ALL-UNNAMED" ); + assertThat( argsFileLines.get( 8 ) ).isEqualTo( "--add-modules" ); + assertThat( argsFileLines.get( 9 ) ).isEqualTo( "abc" ); + assertThat( argsFileLines.get( 10 ) ).isEqualTo( "--add-reads" ); + assertThat( argsFileLines.get( 11 ) ).isEqualTo( "abc=ALL-UNNAMED" ); + assertThat( argsFileLines.get( 12 ) ).isEqualTo( ForkedBooter.class.getName() ); + + ModularClasspath modularClasspath = new ModularClasspath( descriptor, modulePath, packages, patchFile ); + Classpath testClasspathUrls = new Classpath( singleton( "target" + separator + "test-classes" ) ); + Classpath surefireClasspathUrls = Classpath.emptyClasspath(); + ModularClasspathConfiguration modularClasspathConfiguration = + new ModularClasspathConfiguration( modularClasspath, testClasspathUrls, surefireClasspathUrls, + true, true ); + StartupConfiguration startupConfiguration = + new StartupConfiguration( "JUnitCoreProvider", modularClasspathConfiguration, null, true, true ); + OutputStreamFlushableCommandline cli = new OutputStreamFlushableCommandline(); + config.resolveClasspath( cli, ForkedBooter.class.getName(), startupConfiguration ); + + assertThat( cli.getArguments() ).isNotNull(); + assertThat( cli.getArguments() ).hasSize( 1 ); + assertThat( cli.getArguments()[0] ).startsWith( "@" ); + File argFile = new File( cli.getArguments()[0].substring( 1 ) ); + assertThat( argFile ).isFile(); + List<String> argsFileLines2 = readAllLines( argFile.toPath() ); + assertThat( argsFileLines2 ).hasSize( 13 ); + for ( int i = 0; i < argsFileLines2.size(); i++ ) + { + String line = argsFileLines2.get( i ); + assertThat( line ).isEqualTo( argsFileLines.get( i ) ); + } + } +} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/maven-surefire-common/src/test/java/org/apache/maven/surefire/JUnit4SuiteTest.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/test/java/org/apache/maven/surefire/JUnit4SuiteTest.java b/maven-surefire-common/src/test/java/org/apache/maven/surefire/JUnit4SuiteTest.java index 53d2f87..5a5dae2 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/surefire/JUnit4SuiteTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/surefire/JUnit4SuiteTest.java @@ -30,6 +30,7 @@ import org.apache.maven.plugin.surefire.booterclient.BooterDeserializerStartupCo import org.apache.maven.plugin.surefire.booterclient.DefaultForkConfigurationTest; import org.apache.maven.plugin.surefire.booterclient.ForkConfigurationTest; import org.apache.maven.plugin.surefire.booterclient.ForkingRunListenerTest; +import org.apache.maven.plugin.surefire.booterclient.ModularClasspathForkConfigurationTest; import org.apache.maven.plugin.surefire.booterclient.lazytestprovider.TestLessInputStreamBuilderTest; import org.apache.maven.plugin.surefire.booterclient.lazytestprovider.TestProvidingInputStreamTest; import org.apache.maven.plugin.surefire.report.DefaultReporterFactoryTest; @@ -76,7 +77,8 @@ import org.junit.runners.Suite; SurefireReflectorTest.class, SurefireHelperTest.class, AbstractSurefireMojoTest.class, - DefaultForkConfigurationTest.class + DefaultForkConfigurationTest.class, + ModularClasspathForkConfigurationTest.class } ) @RunWith( Suite.class ) public class JUnit4SuiteTest http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 34a0b9c..d6b74bb 100644 --- a/pom.xml +++ b/pom.xml @@ -97,6 +97,8 @@ <maven.site.path>surefire-archives/surefire-LATEST</maven.site.path> <!-- Override with Jigsaw JRE 9 --> <jdk.home>${java.home}/..</jdk.home> + <maven.compiler.testSource>1.8</maven.compiler.testSource> + <maven.compiler.testTarget>1.8</maven.compiler.testTarget> </properties> <dependencyManagement> @@ -310,8 +312,7 @@ <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> - <version>2.0.1</version> - <scope>provided</scope> + <version>2.0.3</version> </dependency> </dependencies> </dependencyManagement> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/surefire-booter/pom.xml ---------------------------------------------------------------------- diff --git a/surefire-booter/pom.xml b/surefire-booter/pom.xml index 75eb8e7..0d7f431 100644 --- a/surefire-booter/pom.xml +++ b/surefire-booter/pom.xml @@ -56,6 +56,11 @@ <artifactId>commons-io</artifactId> </dependency> <dependency> + <groupId>com.google.code.findbugs</groupId> + <artifactId>jsr305</artifactId> + <scope>provided</scope> + </dependency> + <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <scope>test</scope> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/surefire-booter/src/main/java/org/apache/maven/surefire/booter/AbstractPathConfiguration.java ---------------------------------------------------------------------- diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/AbstractPathConfiguration.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/AbstractPathConfiguration.java index 5f0b67e..c9651ab 100644 --- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/AbstractPathConfiguration.java +++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/AbstractPathConfiguration.java @@ -19,6 +19,8 @@ package org.apache.maven.surefire.booter; * under the License. */ +import javax.annotation.Nonnull; + import static org.apache.maven.surefire.booter.Classpath.emptyClasspath; import static org.apache.maven.surefire.booter.Classpath.join; @@ -47,10 +49,10 @@ public abstract class AbstractPathConfiguration // todo: @deprecated because the IsolatedClassLoader is really isolated - no parent. private final boolean childDelegation; - protected AbstractPathConfiguration( Classpath surefireClasspathUrls, + protected AbstractPathConfiguration( @Nonnull Classpath surefireClasspathUrls, boolean enableAssertions, boolean childDelegation ) { - if ( !( isClassPathConfig() ^ isModularPathConfig() ) ) + if ( isClassPathConfig() == isModularPathConfig() ) { throw new IllegalStateException( "modular path and class path should be exclusive" ); } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/surefire-booter/src/main/java/org/apache/maven/surefire/booter/Classpath.java ---------------------------------------------------------------------- diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/Classpath.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/Classpath.java index bcbed4f..42218ee 100644 --- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/Classpath.java +++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/Classpath.java @@ -19,6 +19,7 @@ package org.apache.maven.surefire.booter; * under the License. */ +import javax.annotation.Nonnull; import java.io.File; import java.net.MalformedURLException; import java.net.URL; @@ -41,13 +42,13 @@ import static org.apache.maven.surefire.util.internal.UrlUtils.toURL; * * @author Kristian Rosenvold */ -public class Classpath implements Iterable<String> +public final class Classpath implements Iterable<String> { private final List<String> unmodifiableElements; public static Classpath join( Classpath firstClasspath, Classpath secondClasspath ) { - LinkedHashSet<String> accumulated = new LinkedHashSet<String>( ); + LinkedHashSet<String> accumulated = new LinkedHashSet<String>(); if ( firstClasspath != null ) { firstClasspath.addTo( accumulated ); @@ -59,26 +60,24 @@ public class Classpath implements Iterable<String> return new Classpath( accumulated ); } - - private void addTo( Collection<String> c ) + private void addTo( @Nonnull Collection<String> c ) { c.addAll( unmodifiableElements ); } private Classpath() { - this.unmodifiableElements = Collections.emptyList(); + unmodifiableElements = Collections.emptyList(); } - - public Classpath( Classpath other, String additionalElement ) + public Classpath( @Nonnull Classpath other, @Nonnull String additionalElement ) { ArrayList<String> elems = new ArrayList<String>( other.unmodifiableElements ); elems.add( additionalElement ); unmodifiableElements = Collections.unmodifiableList( elems ); } - public Classpath( Collection<String> elements ) + public Classpath( @Nonnull Collection<String> elements ) { List<String> newCp = new ArrayList<String>( elements.size() ); for ( String element : elements ) @@ -106,6 +105,7 @@ public class Classpath implements Iterable<String> return !unmodifiableElements.contains( path ) ? new Classpath( this, path ) : this; } + @Nonnull public List<String> getClassPath() { return unmodifiableElements; @@ -131,7 +131,7 @@ public class Classpath implements Iterable<String> return urls; } - public void writeToSystemProperty( String propertyName ) + public void writeToSystemProperty( @Nonnull String propertyName ) { StringBuilder sb = new StringBuilder(); for ( String element : unmodifiableElements ) @@ -159,7 +159,7 @@ public class Classpath implements Iterable<String> return unmodifiableElements.equals( classpath.unmodifiableElements ); } - public ClassLoader createClassLoader( boolean childDelegation, boolean enableAssertions, String roleName ) + public ClassLoader createClassLoader( boolean childDelegation, boolean enableAssertions, @Nonnull String roleName ) throws SurefireExecutionException { try @@ -189,7 +189,7 @@ public class Classpath implements Iterable<String> return unmodifiableElements.hashCode(); } - public String getLogMessage( String descriptor ) + public String getLogMessage( @Nonnull String descriptor ) { StringBuilder result = new StringBuilder( descriptor ); for ( String element : unmodifiableElements ) @@ -200,7 +200,7 @@ public class Classpath implements Iterable<String> return result.toString(); } - public String getCompactLogMessage( String descriptor ) + public String getCompactLogMessage( @Nonnull String descriptor ) { StringBuilder result = new StringBuilder( descriptor ); for ( String element : unmodifiableElements ) http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/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 a288f2a..e6ebece 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 @@ -19,6 +19,8 @@ package org.apache.maven.surefire.booter; * under the License. */ +import javax.annotation.Nonnull; + import static org.apache.maven.surefire.booter.Classpath.emptyClasspath; /** @@ -43,14 +45,15 @@ public class ClasspathConfiguration extends AbstractPathConfiguration this( emptyClasspath(), emptyClasspath(), emptyClasspath(), enableAssertions, childDelegation ); } - ClasspathConfiguration( PropertiesWrapper properties ) + ClasspathConfiguration( @Nonnull PropertiesWrapper properties ) { this( properties.getClasspath( CLASSPATH ), properties.getClasspath( SUREFIRE_CLASSPATH ), emptyClasspath(), properties.getBooleanProperty( ENABLE_ASSERTIONS ), properties.getBooleanProperty( CHILD_DELEGATION ) ); } - public ClasspathConfiguration( Classpath testClasspathUrls, Classpath surefireClassPathUrls, - Classpath inprocClasspath, boolean enableAssertions, boolean childDelegation ) + public ClasspathConfiguration( @Nonnull Classpath testClasspathUrls, @Nonnull Classpath surefireClassPathUrls, + @Nonnull Classpath inprocClasspath, boolean enableAssertions, + boolean childDelegation ) { super( surefireClassPathUrls, enableAssertions, childDelegation ); this.testClasspathUrls = testClasspathUrls; http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ModularClasspath.java ---------------------------------------------------------------------- diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ModularClasspath.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ModularClasspath.java index 0d7b8eb..9607b27 100644 --- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ModularClasspath.java +++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ModularClasspath.java @@ -19,6 +19,7 @@ package org.apache.maven.surefire.booter; * under the License. */ +import javax.annotation.Nonnull; import java.io.File; import java.util.Collection; import java.util.List; @@ -39,8 +40,9 @@ public final class ModularClasspath private final Collection<String> packages; private final File patchFile; - public ModularClasspath( File moduleDescriptor, List<String> modulePath, Collection<String> packages, - File patchFile ) + public ModularClasspath( @Nonnull File moduleDescriptor, @Nonnull List<String> modulePath, + @Nonnull Collection<String> packages, + @Nonnull File patchFile ) { this.moduleDescriptor = moduleDescriptor; this.modulePath = modulePath; @@ -48,21 +50,25 @@ public final class ModularClasspath this.patchFile = patchFile; } + @Nonnull public File getModuleDescriptor() { return moduleDescriptor; } + @Nonnull public List<String> getModulePath() { return unmodifiableList( modulePath ); } + @Nonnull public Collection<String> getPackages() { return unmodifiableCollection( packages ); } + @Nonnull public File getPatchFile() { return patchFile; http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ModularClasspathConfiguration.java ---------------------------------------------------------------------- diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ModularClasspathConfiguration.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ModularClasspathConfiguration.java index 655b864..823b445 100644 --- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ModularClasspathConfiguration.java +++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ModularClasspathConfiguration.java @@ -19,6 +19,8 @@ package org.apache.maven.surefire.booter; * under the License. */ +import javax.annotation.Nonnull; + /** * @author <a href="mailto:tibordig...@apache.org">Tibor Digana (tibor17)</a> * @since 2.21.0.Jigsaw @@ -28,8 +30,10 @@ public class ModularClasspathConfiguration extends AbstractPathConfiguration private final ModularClasspath modularClasspath; private final Classpath testClasspathUrls; - public ModularClasspathConfiguration( ModularClasspath modularClasspath, Classpath testClasspathUrls, - Classpath surefireClasspathUrls, boolean enableAssertions, + public ModularClasspathConfiguration( @Nonnull ModularClasspath modularClasspath, + @Nonnull Classpath testClasspathUrls, + @Nonnull Classpath surefireClasspathUrls, + boolean enableAssertions, boolean childDelegation ) { super( surefireClasspathUrls, enableAssertions, childDelegation ); http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c594ac4c/surefire-booter/src/main/java/org/apache/maven/surefire/booter/StartupConfiguration.java ---------------------------------------------------------------------- diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/StartupConfiguration.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/StartupConfiguration.java index 7dd30ff..8003ce5 100644 --- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/StartupConfiguration.java +++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/StartupConfiguration.java @@ -19,6 +19,8 @@ package org.apache.maven.surefire.booter; * under the License. */ +import javax.annotation.Nonnull; + /** * Configuration that is used by the SurefireStarter but does not make it into the provider itself. * @@ -34,8 +36,9 @@ public class StartupConfiguration private final boolean isForkRequested; private final boolean isInForkedVm; - public StartupConfiguration( String providerClassName, AbstractPathConfiguration classpathConfiguration, - ClassLoaderConfiguration classLoaderConfiguration, boolean isForkRequested, + public StartupConfiguration( @Nonnull String providerClassName, + @Nonnull AbstractPathConfiguration classpathConfiguration, + @Nonnull ClassLoaderConfiguration classLoaderConfiguration, boolean isForkRequested, boolean inForkedVm ) { this.classpathConfiguration = classpathConfiguration;