maven-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Scholte" <rfscho...@apache.org>
Subject Re: [maven-surefire] 01/01: [SUREFIRE-1531] Option to disable Java 9 modules
Date Sat, 17 Nov 2018 12:00:10 GMT
On Sat, 17 Nov 2018 11:34:43 +0100, <tibordigana@apache.org> wrote:

> This is an automated email from the ASF dual-hosted git repository.
>
> tibordigana pushed a commit to branch SUREFIRE-1531
> in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
>
> commit f333b7d9e89ddfe086fd1cb930df0f77a0edbc96
> Author: Lukas Krecan <lukas@krecan.net>
> AuthorDate: Sun Jul 1 08:54:22 2018 +0200
>
>     [SUREFIRE-1531] Option to disable Java 9 modules
> ---
>  .../maven/plugin/failsafe/IntegrationTestMojo.java | 23 ++++++++++
>  .../plugin/surefire/AbstractSurefireMojo.java      | 53  
> +++++++++++++++-------
>  .../AbstractSurefireMojoJava7PlusTest.java         | 12 +++++
>  .../plugin/surefire/AbstractSurefireMojoTest.java  | 12 +++++
>  .../maven/plugin/surefire/MojoMocklessTest.java    | 12 +++++
>  .../maven/plugin/surefire/SurefirePlugin.java      | 23 ++++++++++
>  6 files changed, 119 insertions(+), 16 deletions(-)
>
> diff --git  
> a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
 
> b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
> index 52f9052..42b4cc6 100644
> ---  
> a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
> +++  
> b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
> @@ -370,6 +370,17 @@ public class IntegrationTestMojo
>      @Parameter( property = "failsafe.shutdown", defaultValue =  
> "testset" )
>      private String shutdown;
> +    /**
> +     * Disables Jigsaw (Java 9) modular path even if  
> <i>module-info.java</i> is used in project.
> +     * <br>
> +     * Enabled by default.
> +     * If enabled, <i>module-info.java</i> exists and executes with JDK
 
> 9+, modular path is used.
> +     *
> +     * @since 3.0.0-M2
> +     */
> +    @Parameter( property = "failsafe.useJigsawModules", defaultValue =  
> "true" )
> +    private boolean useJigsawModules;
> +


I think we should avoid referring to Jigsaw, that was the name of the  
project.
I'd prefer useJavaModules instead, or maybe even useModulePath.


>      @Override
>      protected int getRerunFailingTestsCount()
>      {
> @@ -801,6 +812,18 @@ public class IntegrationTestMojo
>      }
>     @Override
> +    protected boolean useJigsawModules()
> +    {
> +        return useJigsawModules;
> +    }
> +
> +    @Override
> +    protected void setUseJigsawModules( boolean useJigsawModules )
> +    {
> +        this.useJigsawModules = useJigsawModules;
> +    }
> +
> +    @Override
>      protected final List<File> suiteXmlFiles()
>      {
>          return hasSuiteXmlFiles() ? Arrays.asList( suiteXmlFiles ) :  
> Collections.<File>emptyList();
> 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 319f21d..4a1a213 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
> @@ -104,6 +104,7 @@ import java.util.SortedSet;
>  import java.util.TreeSet;
>  import java.util.concurrent.ConcurrentHashMap;
> +import static java.lang.Boolean.TRUE;
>  import static java.lang.Thread.currentThread;
>  import static java.util.Arrays.asList;
>  import static java.util.Collections.addAll;
> @@ -728,6 +729,9 @@ public abstract class AbstractSurefireMojo
>      @Parameter( property = "dependenciesToScan" )
>      private String[] dependenciesToScan;
> +    /**
> +     *
> +     */
>      @Component
>      private ToolchainManager toolchainManager;
> @@ -787,6 +791,10 @@ public abstract class AbstractSurefireMojo
>     protected abstract String getReportSchemaLocation();
> +    protected abstract boolean useJigsawModules();
> +
> +    protected abstract void setUseJigsawModules( boolean  
> useJigsawModules );
> +
>      /**
>       * This plugin MOJO artifact.
>       *
> @@ -954,7 +962,7 @@ public abstract class AbstractSurefireMojo
>          if ( !getTestClassesDirectory().exists()
>              && ( getDependenciesToScan() == null ||  
> getDependenciesToScan().length == 0 ) )
>          {
> -            if ( Boolean.TRUE.equals( getFailIfNoTests() ) )
> +            if ( TRUE.equals( getFailIfNoTests() ) )
>              {
>                  throw new MojoFailureException( "No tests to run!" );
>              }
> @@ -1123,17 +1131,18 @@ public abstract class AbstractSurefireMojo
>          RunOrderParameters runOrderParameters =
>              new RunOrderParameters( getRunOrder(), getStatisticsFile(  
> getConfigChecksum() ) );
> +        Platform platform = PLATFORM.withJdkExecAttributesForTests(  
> getEffectiveJvm() );
>          if ( isNotForking() )
>          {
>              createCopyAndReplaceForkNumPlaceholder(  
> effectiveProperties, 1 ).copyToSystemProperties();
>             InPluginVMSurefireStarter surefireStarter =
> -                createInprocessStarter( provider,  
> classLoaderConfiguration, runOrderParameters, scanResult );
> +                createInprocessStarter( provider,  
> classLoaderConfiguration, runOrderParameters, scanResult, platform );
>              return surefireStarter.runSuitesInProcess( scanResult );
>          }
>          else
>          {
> -            ForkConfiguration forkConfiguration =  
> getForkConfiguration();
> +            ForkConfiguration forkConfiguration =  
> createForkConfiguration( platform );
>              if ( getConsoleLogger().isDebugEnabled() )
>              {
>                  showMap( getEnvironmentVariables(), "environment  
> variable" );
> @@ -1144,7 +1153,7 @@ public abstract class AbstractSurefireMojo
>              try
>              {
>                  forkStarter = createForkStarter( provider,  
> forkConfiguration, classLoaderConfiguration,
> -                                                        
> runOrderParameters, getConsoleLogger(), scanResult );
> +                                                        
> runOrderParameters, getConsoleLogger(), scanResult, platform );
>                 return forkStarter.run( effectiveProperties, scanResult  
> );
>              }
> @@ -1231,6 +1240,13 @@ public abstract class AbstractSurefireMojo
>          return new File( getClassesDirectory(), "module-info.class" );
>      }
> +    private boolean canExecuteProviderWithJigsaw( Platform platform )
> +    {
> +        return useJigsawModules()
> +                &&  
> platform.getJdkExecAttributesForTests().isJava9AtLeast()
> +                && existsModuleDescriptor();
> +    }
> +
>      /**
>       * Converts old TestNG configuration parameters over to new  
> properties based configuration
>       * method. (if any are defined the old way)
> @@ -1683,18 +1699,18 @@ public abstract class AbstractSurefireMojo
>     private StartupConfiguration createStartupConfiguration( @Nonnull  
> ProviderInfo provider, boolean isInprocess,
>                                                               @Nonnull  
> ClassLoaderConfiguration classLoaderConfiguration,
> -                                                             @Nonnull  
> DefaultScanResult scanResult )
> +                                                             @Nonnull  
> DefaultScanResult scanResult,
> +                                                             @Nonnull  
> Platform platform )
>          throws MojoExecutionException
>      {
>          try
>          {
> -            File moduleDescriptor = getModuleDescriptor();
>              Set<Artifact> providerArtifacts =  
> provider.getProviderClasspath();
>              String providerName = provider.getProviderName();
> -            if ( moduleDescriptor.exists() && !isInprocess )
> +            if ( canExecuteProviderWithJigsaw( platform ) &&  
> !isInprocess )
>              {
>                  return newStartupConfigWithModularPath(  
> classLoaderConfiguration, providerArtifacts, providerName,
> -                        moduleDescriptor, scanResult );
> +                        getModuleDescriptor(), scanResult );
>              }
>              else
>              {
> @@ -2107,11 +2123,11 @@ public abstract class AbstractSurefireMojo
>      private ForkStarter createForkStarter( @Nonnull ProviderInfo  
> provider, @Nonnull ForkConfiguration forkConfiguration,
>                                             @Nonnull  
> ClassLoaderConfiguration classLoaderConfiguration,
>                                             @Nonnull RunOrderParameters  
> runOrderParameters, @Nonnull ConsoleLogger log,
> -                                           @Nonnull DefaultScanResult  
> scanResult )
> +                                           @Nonnull DefaultScanResult  
> scanResult, @Nonnull Platform platform )
>          throws MojoExecutionException, MojoFailureException
>      {
>          StartupConfiguration startupConfiguration =
> -                createStartupConfiguration( provider, false,  
> classLoaderConfiguration, scanResult );
> +                createStartupConfiguration( provider, false,  
> classLoaderConfiguration, scanResult, platform );
>          String configChecksum = getConfigChecksum();
>          StartupReportConfiguration startupReportConfiguration =  
> getStartupReportConfiguration( configChecksum, true );
>          ProviderConfiguration providerConfiguration =  
> createProviderConfiguration( runOrderParameters );
> @@ -2122,11 +2138,12 @@ public abstract class AbstractSurefireMojo
>      private InPluginVMSurefireStarter createInprocessStarter( @Nonnull  
> ProviderInfo provider,
>                                                                @Nonnull  
> ClassLoaderConfiguration classLoaderConfig,
>                                                                @Nonnull  
> RunOrderParameters runOrderParameters,
> -                                                              @Nonnull  
> DefaultScanResult scanResult )
> +                                                              @Nonnull  
> DefaultScanResult scanResult,
> +                                                              @Nonnull  
> Platform platform )
>          throws MojoExecutionException, MojoFailureException
>      {
>          StartupConfiguration startupConfiguration =
> -                createStartupConfiguration( provider, true,  
> classLoaderConfig, scanResult );
> +                createStartupConfiguration( provider, true,  
> classLoaderConfig, scanResult, platform );
>          String configChecksum = getConfigChecksum();
>          StartupReportConfiguration startupReportConfiguration =  
> getStartupReportConfiguration( configChecksum, false );
>          ProviderConfiguration providerConfiguration =  
> createProviderConfiguration( runOrderParameters );
> @@ -2135,7 +2152,7 @@ public abstract class AbstractSurefireMojo
>      }
>     @Nonnull
> -    private ForkConfiguration getForkConfiguration() throws  
> MojoFailureException
> +    private ForkConfiguration createForkConfiguration( Platform  
> platform )
>      {
>          File tmpDir = getSurefireTempDir();
> @@ -2143,9 +2160,7 @@ public abstract class AbstractSurefireMojo
>         Classpath bootClasspath = getArtifactClasspath( shadeFire !=  
> null ? shadeFire : surefireBooterArtifact );
> -        Platform platform = PLATFORM.withJdkExecAttributesForTests(  
> getEffectiveJvm() );
> -
> -        if ( platform.getJdkExecAttributesForTests().isJava9AtLeast()  
> && existsModuleDescriptor() )
> +        if ( canExecuteProviderWithJigsaw( platform ) )
>          {
>              return new ModularClasspathForkConfiguration( bootClasspath,
>                      tmpDir,
> @@ -2414,6 +2429,7 @@ public abstract class AbstractSurefireMojo
>          checksum.add( getForkedProcessExitTimeoutInSeconds() );
>          checksum.add( getRerunFailingTestsCount() );
>          checksum.add( getTempDir() );
> +        checksum.add( useJigsawModules() );
>          addPluginSpecificChecksumItems( checksum );
>          return checksum.getSha1();
>      }
> @@ -3479,6 +3495,11 @@ public abstract class AbstractSurefireMojo
>          this.dependenciesToScan = dependenciesToScan;
>      }
> +    public PluginDescriptor getPluginDescriptor()
> +    {
> +        return pluginDescriptor;
> +    }
> +
>      public MavenProject getProject()
>      {
>          return project;
> diff --git  
> a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
 
> b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
> index f73124a..b3dc339 100644
> ---  
> a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
> +++  
> b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
> @@ -560,6 +560,18 @@ public class AbstractSurefireMojoJava7PlusTest
>          }
>         @Override
> +        protected boolean useJigsawModules()
> +        {
> +            return false;
> +        }
> +
> +        @Override
> +        protected void setUseJigsawModules( boolean useJigsawModules )
> +        {
> +
> +        }
> +
> +        @Override
>          protected Artifact getMojoArtifact()
>          {
>              return null;
> diff --git  
> a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
 
> b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
> index de62c60..8514269 100644
> ---  
> a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
> +++  
> b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
> @@ -705,6 +705,18 @@ public class AbstractSurefireMojoTest
>          }
>         @Override
> +        protected boolean useJigsawModules()
> +        {
> +            return false;
> +        }
> +
> +        @Override
> +        protected void setUseJigsawModules( boolean useJigsawModules )
> +        {
> +
> +        }
> +
> +        @Override
>          protected Artifact getMojoArtifact()
>          {
>              return null;
> diff --git  
> a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
 
> b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
> index 597527b..e555b00 100644
> ---  
> a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
> +++  
> b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
> @@ -612,6 +612,18 @@ public class MojoMocklessTest
>          }
>         @Override
> +        protected boolean useJigsawModules()
> +        {
> +            return false;
> +        }
> +
> +        @Override
> +        protected void setUseJigsawModules( boolean useJigsawModules )
> +        {
> +
> +        }
> +
> +        @Override
>          protected Artifact getMojoArtifact()
>          {
>              return null;
> diff --git  
> a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
 
> b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
> index 73ea01e..7fbbe20 100644
> ---  
> a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
> +++  
> b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
> @@ -349,6 +349,17 @@ public class SurefirePlugin
>      @Parameter( property = "surefire.shutdown", defaultValue =  
> "testset" )
>      private String shutdown;
> +    /**
> +     * Disables Jigsaw (Java 9) modular path even if  
> <i>module-info.java</i> is used in project.
> +     * <br>
> +     * Enabled by default.
> +     * If enabled, <i>module-info.java</i> exists and executes with JDK
 
> 9+, modular path is used.
> +     *
> +     * @since 3.0.0-M2
> +     */
> +    @Parameter( property = "surefire.useJigsawModules", defaultValue =  
> "true" )
> +    private boolean useJigsawModules;
> +
>      @Override
>      protected int getRerunFailingTestsCount()
>      {
> @@ -703,6 +714,18 @@ public class SurefirePlugin
>      }
>     @Override
> +    protected boolean useJigsawModules()
> +    {
> +        return useJigsawModules;
> +    }
> +
> +    @Override
> +    protected void setUseJigsawModules( boolean useJigsawModules )
> +    {
> +        this.useJigsawModules = useJigsawModules;
> +    }
> +
> +    @Override
>      protected final List<File> suiteXmlFiles()
>      {
>          return hasSuiteXmlFiles() ? Arrays.asList( suiteXmlFiles ) :  
> Collections.<File>emptyList();

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Mime
View raw message