You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ma...@apache.org on 2022/09/16 12:38:55 UTC
[maven] branch master updated: [MNG-7098] Keep the project counter intact when resuming a multi-module project.
This is an automated email from the ASF dual-hosted git repository.
martinkanters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push:
new 4a06f1f5c [MNG-7098] Keep the project counter intact when resuming a multi-module project.
4a06f1f5c is described below
commit 4a06f1f5c3ccc6753f8de30a6ca53af154e99f70
Author: Martin Kanters <ma...@apache.org>
AuthorDate: Fri Aug 5 15:39:12 2022 +0200
[MNG-7098] Keep the project counter intact when resuming a multi-module project.
---
.../maven/cli/event/ExecutionEventLogger.java | 6 +-
.../maven/cli/event/ExecutionEventLoggerTest.java | 103 ++++++++++++++++++---
2 files changed, 96 insertions(+), 13 deletions(-)
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java b/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java
index 7d33f11c0..66f13a049 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java
@@ -143,7 +143,11 @@ public class ExecutionEventLogger extends AbstractExecutionListener
project.getName(), chars( ' ', ( len > 0 ) ? len : 1 ), project.getPackaging() );
}
- totalProjects = projects.size();
+ final List<MavenProject> allProjects = event.getSession().getAllProjects();
+ final int projectsSkipped = allProjects.size() - projects.size();
+
+ currentVisitedProjectCount = projectsSkipped;
+ totalProjects = allProjects.size();
}
}
diff --git a/maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java b/maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java
index 6f5b8e211..bc682edc7 100644
--- a/maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java
+++ b/maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java
@@ -19,12 +19,16 @@ package org.apache.maven.cli.event;
* under the License.
*/
+import static org.mockito.ArgumentMatchers.contains;
+import static org.mockito.ArgumentMatchers.matches;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.when;
import java.io.File;
+import com.google.common.collect.ImmutableList;
import org.apache.commons.io.FilenameUtils;
import org.apache.maven.execution.ExecutionEvent;
import org.apache.maven.execution.MavenSession;
@@ -32,6 +36,7 @@ import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.utils.logging.MessageUtils;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InOrder;
import org.mockito.Mockito;
@@ -39,6 +44,10 @@ import org.slf4j.Logger;
class ExecutionEventLoggerTest
{
+
+ private Logger logger;
+ private ExecutionEventLogger executionEventLogger;
+
@BeforeAll
public static void setUp()
{
@@ -51,14 +60,17 @@ class ExecutionEventLoggerTest
MessageUtils.setColorEnabled( true );
}
+ @BeforeEach
+ void beforeEach() {
+ logger = mock( Logger.class );
+ when( logger.isInfoEnabled() ).thenReturn( true );
+ executionEventLogger = new ExecutionEventLogger( logger );
+ }
+
@Test
void testProjectStarted()
{
// prepare
- Logger logger = mock( Logger.class );
- when( logger.isInfoEnabled() ).thenReturn( true );
- ExecutionEventLogger executionEventLogger = new ExecutionEventLogger( logger );
-
File basedir = new File( "" ).getAbsoluteFile();
ExecutionEvent event = mock( ExecutionEvent.class );
MavenProject project = mock( MavenProject.class );
@@ -92,10 +104,6 @@ class ExecutionEventLoggerTest
void testProjectStartedOverflow()
{
// prepare
- Logger logger = mock( Logger.class );
- when( logger.isInfoEnabled() ).thenReturn( true );
- ExecutionEventLogger executionEventLogger = new ExecutionEventLogger( logger );
-
File basedir = new File( "" ).getAbsoluteFile();
ExecutionEvent event = mock( ExecutionEvent.class );
MavenProject project = mock( MavenProject.class );
@@ -161,13 +169,10 @@ class ExecutionEventLoggerTest
Mockito.verify( logger ).info( "-----------------------------------------------------[ maven-plugin ]-----------------------------------------------------" );
}
+ @Test
public void testProjectStartedNoPom()
{
// prepare
- Logger logger = mock( Logger.class );
- when( logger.isInfoEnabled() ).thenReturn( true );
- ExecutionEventLogger executionEventLogger = new ExecutionEventLogger( logger );
-
File basedir = new File( "" ).getAbsoluteFile();
ExecutionEvent event = mock( ExecutionEvent.class );
MavenProject project = mock( MavenProject.class );
@@ -191,6 +196,80 @@ class ExecutionEventLoggerTest
inOrder.verify( logger ).info( "--------------------------------[ pom ]---------------------------------" );
}
+ @Test
+ void testMultiModuleProjectProgress()
+ {
+ // prepare
+ MavenProject project1 = generateMavenProject("Apache Maven Embedder 1");
+ MavenProject project2 = generateMavenProject("Apache Maven Embedder 2");
+ MavenProject project3 = generateMavenProject("Apache Maven Embedder 3");
+
+ MavenSession session = mock( MavenSession.class );
+ when( session.getProjects() ).thenReturn( ImmutableList.of( project1, project2, project3 ) );
+ when( session.getAllProjects() ).thenReturn( ImmutableList.of( project1, project2, project3 ) );
+
+ ExecutionEvent sessionStartedEvent = mock( ExecutionEvent.class );
+ when( sessionStartedEvent.getSession() ).thenReturn( session );
+ ExecutionEvent projectStartedEvent1 = mock( ExecutionEvent.class );
+ when( projectStartedEvent1.getProject() ).thenReturn( project1 );
+ ExecutionEvent projectStartedEvent2 = mock( ExecutionEvent.class );
+ when( projectStartedEvent2.getProject() ).thenReturn( project2 );
+ ExecutionEvent projectStartedEvent3 = mock( ExecutionEvent.class );
+ when( projectStartedEvent3.getProject() ).thenReturn( project3 );
+
+ // execute
+ executionEventLogger.sessionStarted( sessionStartedEvent );
+ executionEventLogger.projectStarted( projectStartedEvent1 );
+ executionEventLogger.projectStarted( projectStartedEvent2 );
+ executionEventLogger.projectStarted( projectStartedEvent3 );
+
+ // verify
+ InOrder inOrder = inOrder( logger );
+ inOrder.verify( logger ).info( matches(".*Apache Maven Embedder 1.*\\[1\\/3\\]") );
+ inOrder.verify( logger ).info( matches(".*Apache Maven Embedder 2.*\\[2\\/3\\]") );
+ inOrder.verify( logger ).info( matches(".*Apache Maven Embedder 3.*\\[3\\/3\\]") );
+ }
+
+ @Test
+ void testMultiModuleProjectResumeFromProgress()
+ {
+ // prepare
+ MavenProject project1 = generateMavenProject("Apache Maven Embedder 1");
+ MavenProject project2 = generateMavenProject("Apache Maven Embedder 2");
+ MavenProject project3 = generateMavenProject("Apache Maven Embedder 3");
+
+ MavenSession session = mock( MavenSession.class );
+ when( session.getProjects() ).thenReturn( ImmutableList.of( project2, project3 ) );
+ when( session.getAllProjects() ).thenReturn( ImmutableList.of( project1, project2, project3 ) );
+
+ ExecutionEvent sessionStartedEvent = mock( ExecutionEvent.class );
+ when( sessionStartedEvent.getSession() ).thenReturn( session );
+ ExecutionEvent projectStartedEvent2 = mock( ExecutionEvent.class );
+ when( projectStartedEvent2.getProject() ).thenReturn( project2 );
+ ExecutionEvent projectStartedEvent3 = mock( ExecutionEvent.class );
+ when( projectStartedEvent3.getProject() ).thenReturn( project3 );
+
+ // execute
+ executionEventLogger.sessionStarted( sessionStartedEvent );
+ executionEventLogger.projectStarted( projectStartedEvent2 );
+ executionEventLogger.projectStarted( projectStartedEvent3 );
+
+ // verify
+ InOrder inOrder = inOrder( logger );
+ inOrder.verify( logger, never() ).info( matches(".*Apache Maven Embedder 1.*\\[1\\/3\\]") );
+ inOrder.verify( logger ).info( matches(".*Apache Maven Embedder 2.*\\[2\\/3\\]") );
+ inOrder.verify( logger ).info( matches(".*Apache Maven Embedder 3.*\\[3\\/3\\]") );
+ }
+
+ private static MavenProject generateMavenProject( String projectName )
+ {
+ MavenProject project = mock( MavenProject.class );
+ when( project.getPackaging() ).thenReturn( "jar" );
+ when( project.getVersion() ).thenReturn( "3.5.4-SNAPSHOT" );
+ when( project.getName() ).thenReturn( projectName );
+ return project;
+ }
+
private static String adaptDirSeparator( String path )
{
return FilenameUtils.separatorsToSystem( path );