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 2020/04/20 18:42:28 UTC

[maven] 04/06: Support --also-make flag in combination with --resume-from.

This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch MNG-6863
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 20d33960c57be6e0709205023758f52141dd69dd
Author: Martin Kanters <Ma...@infosupport.com>
AuthorDate: Fri Apr 10 21:16:05 2020 +0200

    Support --also-make flag in combination with --resume-from.
    
    Expanded scenarios with regression tests
---
 .../maven/graph/DefaultGraphBuilderTest.java       | 67 +++++++++++++++-------
 1 file changed, 47 insertions(+), 20 deletions(-)

diff --git a/maven-core/src/test/java/org/apache/maven/graph/DefaultGraphBuilderTest.java b/maven-core/src/test/java/org/apache/maven/graph/DefaultGraphBuilderTest.java
index eff27f5..afbf30a 100644
--- a/maven-core/src/test/java/org/apache/maven/graph/DefaultGraphBuilderTest.java
+++ b/maven-core/src/test/java/org/apache/maven/graph/DefaultGraphBuilderTest.java
@@ -59,9 +59,10 @@ import static org.mockito.Mockito.when;
 @RunWith( Parameterized.class )
 public class DefaultGraphBuilderTest
 {
+    private static final String INDEPENDENT_MODULE = "module-independent";
     private static final String MODULE_A = "module-a";
-    private static final String MODULE_B = "module-b";
-    private static final String MODULE_C = "module-c";
+    private static final String MODULE_B = "module-b"; // depends on module-a
+    private static final String MODULE_C = "module-c"; // depends on module-b
 
     @InjectMocks
     private DefaultGraphBuilder graphBuilder;
@@ -89,39 +90,59 @@ public class DefaultGraphBuilderTest
     public static Collection<Object[]> parameters()
     {
         return asList(
-                scenario("Full reactor")
-                        .expectResult( asList( MODULE_A, MODULE_B, MODULE_C ) ),
-                scenario("Selected project")
+                scenario( "Full reactor" )
+                        .expectResult( asList( INDEPENDENT_MODULE, MODULE_A, MODULE_B, MODULE_C ) ),
+                scenario( "Selected project" )
                         .selectedProjects( singletonList( MODULE_B ) )
                         .expectResult( singletonList( MODULE_B ) ),
-                scenario("Excluded project")
+                scenario( "Excluded project" )
                         .excludedProjects( singletonList( MODULE_B ) )
-                        .expectResult( asList( MODULE_A, MODULE_C ) ),
-                scenario("Resuming from project")
+                        .expectResult( asList( INDEPENDENT_MODULE, MODULE_A, MODULE_C ) ),
+                scenario( "Resuming from project" )
                         .resumeFrom( MODULE_B )
                         .expectResult( asList( MODULE_B, MODULE_C ) ),
-                scenario("Selected project with also make dependencies")
+                scenario( "Selected project with also make dependencies" )
                         .selectedProjects( singletonList( MODULE_C ) )
                         .makeBehavior( REACTOR_MAKE_UPSTREAM )
-                        .expectResult( asList( MODULE_B, MODULE_C ) ),
-                scenario("Selected project with also make dependents")
+                        .expectResult( asList( MODULE_A, MODULE_B, MODULE_C ) ),
+                scenario( "Selected project with also make dependents" )
                         .selectedProjects( singletonList( MODULE_B ) )
                         .makeBehavior( REACTOR_MAKE_DOWNSTREAM )
                         .expectResult( asList( MODULE_B, MODULE_C ) ),
-                scenario("Resuming from project with also make dependencies")
+                scenario( "Resuming from project with also make dependencies" )
                         .makeBehavior( REACTOR_MAKE_UPSTREAM )
                         .resumeFrom( MODULE_C )
-                        .expectResult( asList( MODULE_B, MODULE_C ) ),
-                scenario("Selected project with resume from an also make dependency (MNG-4960 IT#1)")
+                        .expectResult( asList( MODULE_A, MODULE_B, MODULE_C ) ),
+                scenario( "Selected project with resume from an also make dependency (MNG-4960 IT#1)" )
                         .selectedProjects( singletonList( MODULE_C ) )
                         .resumeFrom( MODULE_B )
                         .makeBehavior( REACTOR_MAKE_UPSTREAM )
-                        .expectResult( asList( MODULE_B, MODULE_C ) ),
-                scenario("Selected project with resume from an also make dependent (MNG-4960 IT#2)")
+                        .expectResult( asList( MODULE_A, MODULE_B, MODULE_C ) ),
+                scenario( "Selected project with resume from an also make dependent (MNG-4960 IT#2)" )
                         .selectedProjects( singletonList( MODULE_B ) )
                         .resumeFrom( MODULE_C )
                         .makeBehavior( REACTOR_MAKE_DOWNSTREAM )
+                        .expectResult( singletonList( MODULE_C ) ),
+                scenario( "Excluding an also make dependency from selectedProject does take its transitive dependency" )
+                        .selectedProjects( singletonList( MODULE_C ) )
+                        .excludedProjects( singletonList( MODULE_B ) )
+                        .makeBehavior( REACTOR_MAKE_UPSTREAM )
+                        .expectResult( asList( MODULE_A, MODULE_C ) ),
+                scenario( "Excluding an also make dependency from resumeFrom does take its transitive dependency" )
+                        .resumeFrom( MODULE_C )
+                        .excludedProjects( singletonList( MODULE_B ) )
+                        .makeBehavior( REACTOR_MAKE_UPSTREAM )
+                        .expectResult( asList( MODULE_A, MODULE_C ) ),
+                scenario( "Resume from exclude project downstream" )
+                        .resumeFrom( MODULE_A )
+                        .excludedProjects( singletonList( MODULE_B ) )
+                        .expectResult( asList( MODULE_A, MODULE_C ) ),
+                scenario( "Exclude the project we are resuming from (as proposed in MNG-6676)" )
+                        .resumeFrom( MODULE_B )
+                        .excludedProjects( singletonList( MODULE_B ) )
                         .expectResult( singletonList( MODULE_C ) )
+
+
         );
     }
 
@@ -170,9 +191,12 @@ public class DefaultGraphBuilderTest
         ProjectBuildingResult projectBuildingResult1 = mock( ProjectBuildingResult.class );
         ProjectBuildingResult projectBuildingResult2 = mock( ProjectBuildingResult.class );
         ProjectBuildingResult projectBuildingResult3 = mock( ProjectBuildingResult.class );
+        ProjectBuildingResult projectBuildingResult4 = mock( ProjectBuildingResult.class );
+        MavenProject projectIndependentModule = getMavenProject( "independent-module" );
         MavenProject projectModuleA = getMavenProject( "module-a" );
         MavenProject projectModuleB = getMavenProject( "module-b" );
         MavenProject projectModuleC = getMavenProject( "module-c" );
+        projectModuleB.setDependencies( singletonList( toDependency( projectModuleA) ) );
         projectModuleC.setDependencies( singletonList( toDependency( projectModuleB) ) );
 
         when( session.getRequest() ).thenReturn( mavenExecutionRequest );
@@ -181,13 +205,16 @@ public class DefaultGraphBuilderTest
         when( mavenExecutionRequest.getProjectBuildingRequest() ).thenReturn( projectBuildingRequest );
         when( mavenExecutionRequest.getPom() ).thenReturn( new File( "/tmp/unit-test" ) );
 
-        when( projectBuildingResult1.getProject() ).thenReturn( projectModuleA );
-        when( projectBuildingResult2.getProject() ).thenReturn( projectModuleB );
-        when( projectBuildingResult3.getProject() ).thenReturn( projectModuleC );
+        when( projectBuildingResult1.getProject() ).thenReturn( projectIndependentModule );
+        when( projectBuildingResult2.getProject() ).thenReturn( projectModuleA );
+        when( projectBuildingResult3.getProject() ).thenReturn( projectModuleB );
+        when( projectBuildingResult4.getProject() ).thenReturn( projectModuleC );
 
-        when( projectBuilder.build( anyList(), anyBoolean(), any( ProjectBuildingRequest.class ) ) ).thenReturn( asList( projectBuildingResult1, projectBuildingResult2, projectBuildingResult3 ) );
+        when( projectBuilder.build( anyList(), anyBoolean(), any( ProjectBuildingRequest.class ) ) )
+                .thenReturn( asList( projectBuildingResult1, projectBuildingResult2, projectBuildingResult3, projectBuildingResult4 ) );
 
         artifactIdProjectMap = ImmutableMap.of(
+                INDEPENDENT_MODULE, projectIndependentModule,
                 MODULE_A, projectModuleA,
                 MODULE_B, projectModuleB,
                 MODULE_C, projectModuleC