diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java index f2350af..fb8166c 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java @@ -381,4 +381,34 @@ public void testTransitiveStatic() throws Exception assertThat( result.getPathExceptions().size(), is( 0 ) ); } + @Test + public void testDirectStatic() throws Exception + { + Path moduleA = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java + Path moduleB = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file + Path moduleC = Paths.get( "src/test/resources/mock/jar1.jar" ); // any existing file + Path moduleD = Paths.get( "src/test/resources/mock/jar2.jar" ); // any existing file + ResolvePathsRequest request = ResolvePathsRequest.ofPaths( moduleB, moduleC, moduleD ).setMainModuleDescriptor( moduleA ); + + when( qdoxParser.fromSourcePath( moduleA ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleA" ) + .requires( "moduleB" ) + .requires​( Collections.singleton( JavaModuleDescriptor.JavaRequires.JavaModifier.STATIC ), "moduleD") + .build() ); + when( asmParser.getModuleDescriptor( moduleB ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleB" ) + .requires​( Collections.singleton( JavaModuleDescriptor.JavaRequires.JavaModifier.STATIC ), "moduleC" ) + .build() ); + when( asmParser.getModuleDescriptor( moduleC ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleC" ).build() ); + when( asmParser.getModuleDescriptor( moduleD ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleD" ).build() ); + + + ResolvePathsResult result = locationManager.resolvePaths( request ); + assertThat( result.getPathElements().size(), is( 3 ) ); + assertThat( result.getModulepathElements().size(), is( 2 ) ); + assertThat( result.getModulepathElements().containsKey( moduleB ), is( true ) ); + assertThat( result.getModulepathElements().containsKey( moduleD ), is( true ) ); + assertThat( result.getClasspathElements().size(), is( 1 ) ); + assertThat( result.getClasspathElements().contains( moduleC ), is( true ) ); + assertThat( result.getPathExceptions().size(), is( 0 ) ); + } + } diff --git a/plexus-java/src/test/resources/mock/jar2.jar b/plexus-java/src/test/resources/mock/jar2.jar new file mode 100644 index 0000000..e69de29