This is an automated email from the ASF dual-hosted git repository. tibordigana pushed a commit to branch SUREFIRE-1570 in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
commit 47d9488e95a040044393fbe4db5a24cc22cef15d Author: tibordigana <tibordig...@apache.org> AuthorDate: Wed May 13 01:28:04 2020 +0200 impl - missing setJdkHome, ... --- .../plugin/surefire/AbstractSurefireMojo.java | 26 ++++++++++++++++------ .../AbstractSurefireMojoJava7PlusTest.java | 8 ++++--- 2 files changed, 24 insertions(+), 10 deletions(-) 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 a45651c..38902bf 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 @@ -90,6 +90,8 @@ import org.apache.maven.toolchain.DefaultToolchain; import org.apache.maven.toolchain.Toolchain; import org.apache.maven.toolchain.ToolchainManager; import org.apache.maven.toolchain.java.DefaultJavaToolChain; +import org.codehaus.plexus.languages.java.jpms.ResolvePathRequest; +import org.codehaus.plexus.languages.java.jpms.ResolvePathResult; import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.languages.java.jpms.LocationManager; import org.codehaus.plexus.languages.java.jpms.ResolvePathsRequest; @@ -1379,12 +1381,22 @@ public abstract class AbstractSurefireMojo private boolean existsModuleDescriptor() { - return getModuleDescriptor().isFile(); + return getModuleDescriptor() != null; } - private File getModuleDescriptor() + private ResolvePathResult getModuleDescriptor() { - return new File( getMainBuildPath(), "module-info.class" ); + File mainBuildPath = getMainBuildPath(); + + try + { + // .setJdkHome( ) + return getLocationManager().resolvePath( ResolvePathRequest.ofFile( mainBuildPath ) ); + } + catch ( Exception e ) + { + return null; + } } private boolean canExecuteProviderWithModularPath( Platform platform ) @@ -1960,9 +1972,9 @@ public abstract class AbstractSurefireMojo } private StartupConfiguration newStartupConfigWithModularPath( - @Nonnull ClassLoaderConfiguration classLoaderConfiguration, @Nonnull Set<Artifact> providerArtifacts, - @Nonnull String providerName, @Nonnull File moduleDescriptor, @Nonnull DefaultScanResult scanResult, - @Nonnull String javaHome, @Nonnull TestClassPath testClasspathWrapper ) + @Nonnull ClassLoaderConfiguration classLoaderConfiguration, @Nonnull Set<Artifact> providerArtifacts, + @Nonnull String providerName, @Nonnull ResolvePathResult moduleDescriptor, + @Nonnull DefaultScanResult scanResult, @Nonnull String javaHome, @Nonnull TestClassPath testClasspathWrapper ) throws IOException { Classpath testClasspath = testClasspathWrapper.toClasspath(); @@ -1975,7 +1987,7 @@ public abstract class AbstractSurefireMojo ResolvePathsRequest<String> req = ResolvePathsRequest.ofStrings( testClasspath.getClassPath() ) .setJdkHome( javaHome ) - .setMainModuleDescriptor( moduleDescriptor.getAbsolutePath() ); + .setModuleDescriptor( moduleDescriptor.getModuleDescriptor() ); ResolvePathsResult<String> result = getLocationManager().resolvePaths( req ); for ( Entry<String, Exception> entry : result.getPathExceptions().entrySet() ) 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 4db7aaa..6d259a8 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 @@ -33,6 +33,7 @@ import org.apache.maven.surefire.suite.RunResult; import org.apache.maven.surefire.util.DefaultScanResult; import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor; import org.codehaus.plexus.languages.java.jpms.LocationManager; +import org.codehaus.plexus.languages.java.jpms.ResolvePathResult; import org.codehaus.plexus.languages.java.jpms.ResolvePathsRequest; import org.codehaus.plexus.languages.java.jpms.ResolvePathsResult; import org.codehaus.plexus.languages.java.jpms.ModuleNameSource; @@ -138,14 +139,15 @@ public class AbstractSurefireMojoJava7PlusTest provider.setFile( mockFile( "surefire-provider.jar" ) ); Set<Artifact> providerClasspath = singleton( provider ); - File moduleInfo = mockFile( "classes/module-info.class" ); + ResolvePathResult moduleInfo = mock( ResolvePathResult.class ); + when( moduleInfo.getModuleDescriptor() ).thenReturn( descriptor ); @SuppressWarnings( "unchecked" ) ResolvePathsRequest<String> req = mock( ResolvePathsRequest.class ); mockStatic( ResolvePathsRequest.class ); when( ResolvePathsRequest.ofStrings( eq( testClasspath.toClasspath().getClassPath() ) ) ).thenReturn( req ); when( req.setJdkHome( anyString() ) ).thenReturn( req ); - when( req.setMainModuleDescriptor( eq( moduleInfo.getAbsolutePath() ) ) ).thenReturn( req ); + when( req.setModuleDescriptor( eq( descriptor ) ) ).thenReturn( req ); when( descriptor.name() ).thenReturn( "abc" ); @@ -213,7 +215,7 @@ public class AbstractSurefireMojoJava7PlusTest verify( scanResult, times( 1 ) ).getClasses(); verifyStatic( ResolvePathsRequest.class, times( 1 ) ); ResolvePathsRequest.ofStrings( eq( testClasspath.toClasspath().getClassPath() ) ); - verify( req, times( 1 ) ).setMainModuleDescriptor( eq( moduleInfo.getAbsolutePath() ) ); + verify( req, times( 1 ) ).setModuleDescriptor( eq( descriptor ) ); verify( res, times( 1 ) ).getClasspathElements(); verify( res, times( 1 ) ).getModulepathElements(); verify( locationManager, times( 1 ) ).resolvePaths( eq( req ) );