From 60abb13227ddc701ef33c07202edce8131c59f1a Mon Sep 17 00:00:00 2001 From: Romain Manni-Bucau Date: Thu, 17 Sep 2026 20:51:54 +0200 Subject: [PATCH] Fixes #13135, ensure completude of the reactor summary but privilege failures to be last to stay human efficient Ensure the reactor summary stays complete so we see all built modules and not just the one(s) failing, while keeping failures last for human readability. --- .../maven/cli/event/ExecutionEventLogger.java | 75 +++++++----- .../cli/event/ExecutionEventLoggerTest.java | 112 ++++++++++++++++-- .../cling/event/ExecutionEventLogger.java | 75 +++++++----- .../cling/event/ExecutionEventLoggerTest.java | 112 ++++++++++++++++-- ...nITmng7967ArtifactHandlerLanguageTest.java | 2 +- 5 files changed, 301 insertions(+), 75 deletions(-) diff --git a/compat/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java b/compat/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java index ead9d732fdfa..e8a87b21c909 100644 --- a/compat/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java +++ b/compat/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java @@ -20,6 +20,7 @@ import java.io.File; import java.nio.file.Path; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -199,44 +200,53 @@ private void logReactorSummary(MavenSession session) { List projects = session.getProjects(); - StringBuilder buffer = new StringBuilder(128); - String skippedMessage = builder().warning("SKIPPED").build(); String successMessage = builder().success("SUCCESS").build(); String failureMessage = builder().failure("FAILURE").build(); String unknownMessage = builder().warning("UNKNOWN").build(); - boolean lastWasSkipped = false; + List entries = new ArrayList<>(projects.size()); for (MavenProject project : projects) { BuildSummary buildSummary = result.getBuildSummary(project); String statusMessage; - boolean shouldSkip = result.hasExceptions(); - if (buildSummary == null) { - statusMessage = skippedMessage; - } else if (buildSummary instanceof BuildSuccess) { + int group; + if (buildSummary instanceof BuildSuccess) { statusMessage = successMessage; + group = 1; } else if (buildSummary instanceof BuildFailure) { statusMessage = failureMessage; - shouldSkip = false; + group = 2; + } else if (buildSummary == null) { + statusMessage = skippedMessage; + group = 0; } else { statusMessage = unknownMessage; + group = 0; } + entries.add(new ReactorSummaryEntry(project, buildSummary, group, statusMessage)); + } + + ReactorSummaryRequest request = new ReactorSummaryRequest(entries, new StringBuilder(128), isSingleVersion); - if (shouldSkip) { - lastWasSkipped = true; + logReactorSummaryGroup(request, 0); + logReactorSummaryGroup(request, 1); + logReactorSummaryGroup(request, 2); + } + + private void logReactorSummaryGroup(ReactorSummaryRequest request, int group) { + StringBuilder buffer = request.buffer(); + + for (ReactorSummaryEntry entry : request.entries()) { + if (entry.group() != group) { continue; } - if (lastWasSkipped) { - logger.info("..."); - lastWasSkipped = false; - } - buffer.append(project.getName()); + buffer.append(entry.project().getName()); buffer.append(' '); - if (!isSingleVersion) { - buffer.append(project.getVersion()); + if (!request.isSingleVersion()) { + buffer.append(entry.project().getVersion()); buffer.append(' '); } @@ -247,20 +257,26 @@ private void logReactorSummary(MavenSession session) { buffer.append(' '); } - buffer.append(statusMessage); - if (buildSummary != null) { - formatBuildTime(buffer, buildSummary); + buffer.append(entry.statusMessage()); + if (entry.buildSummary() != null) { + formatBuildTime(buffer, entry.buildSummary()); } - logger.info(buffer.toString()); + if (entry.buildSummary() instanceof BuildFailure) { + logger.error(buffer.toString()); + } else { + logger.info(buffer.toString()); + } buffer.setLength(0); } - - if (lastWasSkipped) { - logger.info("..."); - } } + private record ReactorSummaryRequest( + List entries, StringBuilder buffer, boolean isSingleVersion) {} + + private record ReactorSummaryEntry( + MavenProject project, BuildSummary buildSummary, int group, String statusMessage) {} + private void formatBuildTime(StringBuilder buffer, BuildSummary buildSummary) { buffer.append(" ["); String buildTimeDuration = formatDuration(buildSummary.getTime()); @@ -276,12 +292,17 @@ private void logResult(MavenSession session) { infoLine('-'); MessageBuilder buffer = builder(); - if (session.getResult().hasExceptions()) { + boolean failure = session.getResult().hasExceptions(); + if (failure) { buffer.failure("BUILD FAILURE"); } else { buffer.success("BUILD SUCCESS"); } - logger.info(buffer.toString()); + if (failure) { + logger.error(buffer.toString()); + } else { + logger.info(buffer.toString()); + } } private MessageBuilder builder() { diff --git a/compat/maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java b/compat/maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java index 1f7bd60aa662..17a72222784d 100644 --- a/compat/maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java +++ b/compat/maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java @@ -343,6 +343,97 @@ void testSessionEndedSuccessMultimodule() { inOrder.verify(logger).info("------------------------------------------------------------------------"); } + @Test + void testSessionEndedSuccessWithSkippedModules() { + // prepare + MavenProject project1 = generateMavenProject("Maven Project artifact1"); + MavenProject project2 = generateMavenProject("Maven Project artifact2"); + MavenProject project3 = generateMavenProject("Maven Project artifact3"); + + MavenExecutionResult executionResult = new DefaultMavenExecutionResult(); + executionResult.addBuildSummary(new BuildSuccess(project1, 1000)); + executionResult.addBuildSummary(new BuildSuccess(project3, 3000)); + + MavenExecutionRequest executionRequest = new DefaultMavenExecutionRequest(); + + ProjectDependencyGraph projectDependencyGraph = mock(ProjectDependencyGraph.class); + when(projectDependencyGraph.getSortedProjects()).thenReturn(Arrays.asList(project1, project2, project3)); + + MavenSession mavenSession = mock(MavenSession.class); + when(mavenSession.getResult()).thenReturn(executionResult); + when(mavenSession.getRequest()).thenReturn(executionRequest); + when(mavenSession.getProjects()).thenReturn(Arrays.asList(project1, project2, project3)); + when(mavenSession.getTopLevelProject()).thenReturn(project1); + when(mavenSession.getProjectDependencyGraph()).thenReturn(projectDependencyGraph); + + ExecutionEvent event = mock(ExecutionEvent.class); + when(event.getSession()).thenReturn(mavenSession); + + // execute + executionEventLogger.sessionEnded(event); + + // verify + InOrder inOrder = inOrder(logger); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + inOrder.verify(logger).info("Reactor Summary for Maven Project artifact1 3.5.4-SNAPSHOT:"); + inOrder.verify(logger).info(""); + inOrder.verify(logger).info("Maven Project artifact2 ............................ SKIPPED"); + inOrder.verify(logger).info("Maven Project artifact1 ............................ SUCCESS [ 1.000 s]"); + inOrder.verify(logger).info("Maven Project artifact3 ............................ SUCCESS [ 3.000 s]"); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + inOrder.verify(logger).info("BUILD SUCCESS"); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + inOrder.verify(logger).info(eq("Total time: {}{}"), anyString(), anyString()); + inOrder.verify(logger).info(eq("Finished at: {}"), anyString()); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + } + + @Test + void testSessionEndedFailureMixedWithSkippedModules() { + // prepare + MavenProject project1 = generateMavenProject("Maven Project artifact1"); + MavenProject project2 = generateMavenProject("Maven Project artifact2"); + MavenProject project3 = generateMavenProject("Maven Project artifact3"); + + MavenExecutionResult executionResult = new DefaultMavenExecutionResult(); + executionResult.addBuildSummary(new BuildSuccess(project1, 1000)); + executionResult.addBuildSummary(new BuildSuccess(project3, 3000)); + executionResult.addException(new Exception("Failure")); + + MavenExecutionRequest executionRequest = new DefaultMavenExecutionRequest(); + + ProjectDependencyGraph projectDependencyGraph = mock(ProjectDependencyGraph.class); + when(projectDependencyGraph.getSortedProjects()).thenReturn(Arrays.asList(project1, project2, project3)); + + MavenSession mavenSession = mock(MavenSession.class); + when(mavenSession.getResult()).thenReturn(executionResult); + when(mavenSession.getRequest()).thenReturn(executionRequest); + when(mavenSession.getProjects()).thenReturn(Arrays.asList(project1, project2, project3)); + when(mavenSession.getTopLevelProject()).thenReturn(project1); + when(mavenSession.getProjectDependencyGraph()).thenReturn(projectDependencyGraph); + + ExecutionEvent event = mock(ExecutionEvent.class); + when(event.getSession()).thenReturn(mavenSession); + + // execute + executionEventLogger.sessionEnded(event); + + // verify + InOrder inOrder = inOrder(logger); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + inOrder.verify(logger).info("Reactor Summary for Maven Project artifact1 3.5.4-SNAPSHOT:"); + inOrder.verify(logger).info(""); + inOrder.verify(logger).info("Maven Project artifact2 ............................ SKIPPED"); + inOrder.verify(logger).info("Maven Project artifact1 ............................ SUCCESS [ 1.000 s]"); + inOrder.verify(logger).info("Maven Project artifact3 ............................ SUCCESS [ 3.000 s]"); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + inOrder.verify(logger).error("BUILD FAILURE"); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + inOrder.verify(logger).info(eq("Total time: {}{}"), anyString(), anyString()); + inOrder.verify(logger).info(eq("Finished at: {}"), anyString()); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + } + @Test void testSessionEndedFailureMultimodule() { // prepare @@ -379,11 +470,11 @@ void testSessionEndedFailureMultimodule() { inOrder.verify(logger).info("------------------------------------------------------------------------"); inOrder.verify(logger).info("Reactor Summary for Maven Project artifact1 3.5.4-SNAPSHOT:"); inOrder.verify(logger).info(""); - inOrder.verify(logger).info("..."); - inOrder.verify(logger).info("Maven Project artifact2 ............................ FAILURE [ 2.000 s]"); - inOrder.verify(logger).info("..."); + inOrder.verify(logger).info("Maven Project artifact3 ............................ SKIPPED"); + inOrder.verify(logger).info("Maven Project artifact1 ............................ SUCCESS [ 1.000 s]"); + inOrder.verify(logger).error("Maven Project artifact2 ............................ FAILURE [ 2.000 s]"); inOrder.verify(logger).info("------------------------------------------------------------------------"); - inOrder.verify(logger).info("BUILD FAILURE"); + inOrder.verify(logger).error("BUILD FAILURE"); inOrder.verify(logger).info("------------------------------------------------------------------------"); inOrder.verify(logger).info(eq("Total time: {}{}"), anyString(), anyString()); inOrder.verify(logger).info(eq("Finished at: {}"), anyString()); @@ -434,13 +525,14 @@ void testSessionEndedFailureMultimoduleWithSeparatedFailures() { inOrder.verify(logger).info("------------------------------------------------------------------------"); inOrder.verify(logger).info("Reactor Summary for Maven Project artifact1 3.5.4-SNAPSHOT:"); inOrder.verify(logger).info(""); - inOrder.verify(logger).info("..."); - inOrder.verify(logger).info("Maven Project artifact2 ............................ FAILURE [ 2.000 s]"); - inOrder.verify(logger).info("..."); - inOrder.verify(logger).info("Maven Project artifact5 ............................ FAILURE [ 5.000 s]"); - inOrder.verify(logger).info("..."); + inOrder.verify(logger).info("Maven Project artifact6 ............................ SKIPPED"); + inOrder.verify(logger).info("Maven Project artifact1 ............................ SUCCESS [ 1.000 s]"); + inOrder.verify(logger).info("Maven Project artifact3 ............................ SUCCESS [ 3.000 s]"); + inOrder.verify(logger).info("Maven Project artifact4 ............................ SUCCESS [ 4.000 s]"); + inOrder.verify(logger).error("Maven Project artifact2 ............................ FAILURE [ 2.000 s]"); + inOrder.verify(logger).error("Maven Project artifact5 ............................ FAILURE [ 5.000 s]"); inOrder.verify(logger).info("------------------------------------------------------------------------"); - inOrder.verify(logger).info("BUILD FAILURE"); + inOrder.verify(logger).error("BUILD FAILURE"); inOrder.verify(logger).info("------------------------------------------------------------------------"); inOrder.verify(logger).info(eq("Total time: {}{}"), anyString(), anyString()); inOrder.verify(logger).info(eq("Finished at: {}"), anyString()); diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/event/ExecutionEventLogger.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/event/ExecutionEventLogger.java index b33cb1f6543e..bb8cefdfff34 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/event/ExecutionEventLogger.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/event/ExecutionEventLogger.java @@ -25,6 +25,7 @@ import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.temporal.ChronoUnit; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -204,44 +205,53 @@ private void logReactorSummary(MavenSession session) { List projects = session.getProjects(); - StringBuilder buffer = new StringBuilder(128); - String skippedMessage = builder().warning("SKIPPED").build(); String successMessage = builder().success("SUCCESS").build(); String failureMessage = builder().failure("FAILURE").build(); String unknownMessage = builder().warning("UNKNOWN").build(); - boolean lastWasSkipped = false; + List entries = new ArrayList<>(projects.size()); for (MavenProject project : projects) { BuildSummary buildSummary = result.getBuildSummary(project); String statusMessage; - boolean shouldSkip = result.hasExceptions(); - if (buildSummary == null) { - statusMessage = skippedMessage; - } else if (buildSummary instanceof BuildSuccess) { + int group; + if (buildSummary instanceof BuildSuccess) { statusMessage = successMessage; + group = 1; } else if (buildSummary instanceof BuildFailure) { statusMessage = failureMessage; - shouldSkip = false; + group = 2; + } else if (buildSummary == null) { + statusMessage = skippedMessage; + group = 0; } else { statusMessage = unknownMessage; + group = 0; } + entries.add(new ReactorSummaryEntry(project, buildSummary, group, statusMessage)); + } + + ReactorSummaryRequest request = new ReactorSummaryRequest(entries, new StringBuilder(128), isSingleVersion); - if (shouldSkip) { - lastWasSkipped = true; + logReactorSummaryGroup(request, 0); + logReactorSummaryGroup(request, 1); + logReactorSummaryGroup(request, 2); + } + + private void logReactorSummaryGroup(ReactorSummaryRequest request, int group) { + StringBuilder buffer = request.buffer(); + + for (ReactorSummaryEntry entry : request.entries()) { + if (entry.group() != group) { continue; } - if (lastWasSkipped) { - logger.info("..."); - lastWasSkipped = false; - } - buffer.append(project.getName()); + buffer.append(entry.project().getName()); buffer.append(' '); - if (!isSingleVersion) { - buffer.append(project.getVersion()); + if (!request.isSingleVersion()) { + buffer.append(entry.project().getVersion()); buffer.append(' '); } @@ -252,20 +262,26 @@ private void logReactorSummary(MavenSession session) { buffer.append(' '); } - buffer.append(statusMessage); - if (buildSummary != null) { - formatBuildTime(buffer, buildSummary); + buffer.append(entry.statusMessage()); + if (entry.buildSummary() != null) { + formatBuildTime(buffer, entry.buildSummary()); } - logger.info(buffer.toString()); + if (entry.buildSummary() instanceof BuildFailure) { + logger.error(buffer.toString()); + } else { + logger.info(buffer.toString()); + } buffer.setLength(0); } - - if (lastWasSkipped) { - logger.info("..."); - } } + private record ReactorSummaryRequest( + List entries, StringBuilder buffer, boolean isSingleVersion) {} + + private record ReactorSummaryEntry( + MavenProject project, BuildSummary buildSummary, int group, String statusMessage) {} + private void formatBuildTime(StringBuilder buffer, BuildSummary buildSummary) { buffer.append(" ["); String buildTimeDuration = formatDuration(buildSummary.getExecTime()); @@ -281,12 +297,17 @@ private void logResult(MavenSession session) { infoLine('-'); MessageBuilder buffer = builder(); - if (session.getResult().hasExceptions()) { + boolean failure = session.getResult().hasExceptions(); + if (failure) { buffer.failure("BUILD FAILURE"); } else { buffer.success("BUILD SUCCESS"); } - logger.info(buffer.toString()); + if (failure) { + logger.error(buffer.toString()); + } else { + logger.info(buffer.toString()); + } } private MessageBuilder builder() { diff --git a/impl/maven-cli/src/test/java/org/apache/maven/cling/event/ExecutionEventLoggerTest.java b/impl/maven-cli/src/test/java/org/apache/maven/cling/event/ExecutionEventLoggerTest.java index 4ef45d6b3556..bf863990283c 100644 --- a/impl/maven-cli/src/test/java/org/apache/maven/cling/event/ExecutionEventLoggerTest.java +++ b/impl/maven-cli/src/test/java/org/apache/maven/cling/event/ExecutionEventLoggerTest.java @@ -343,6 +343,97 @@ void testSessionEndedSuccessMultimodule() { inOrder.verify(logger).info("------------------------------------------------------------------------"); } + @Test + void testSessionEndedSuccessWithSkippedModules() { + // prepare + MavenProject project1 = generateMavenProject("Maven Project artifact1"); + MavenProject project2 = generateMavenProject("Maven Project artifact2"); + MavenProject project3 = generateMavenProject("Maven Project artifact3"); + + MavenExecutionResult executionResult = new DefaultMavenExecutionResult(); + executionResult.addBuildSummary(new BuildSuccess(project1, 1000)); + executionResult.addBuildSummary(new BuildSuccess(project3, 3000)); + + MavenExecutionRequest executionRequest = new DefaultMavenExecutionRequest(); + + ProjectDependencyGraph projectDependencyGraph = mock(ProjectDependencyGraph.class); + when(projectDependencyGraph.getSortedProjects()).thenReturn(Arrays.asList(project1, project2, project3)); + + MavenSession mavenSession = mock(MavenSession.class); + when(mavenSession.getResult()).thenReturn(executionResult); + when(mavenSession.getRequest()).thenReturn(executionRequest); + when(mavenSession.getProjects()).thenReturn(Arrays.asList(project1, project2, project3)); + when(mavenSession.getTopLevelProject()).thenReturn(project1); + when(mavenSession.getProjectDependencyGraph()).thenReturn(projectDependencyGraph); + + ExecutionEvent event = mock(ExecutionEvent.class); + when(event.getSession()).thenReturn(mavenSession); + + // execute + executionEventLogger.sessionEnded(event); + + // verify + InOrder inOrder = inOrder(logger); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + inOrder.verify(logger).info("Reactor Summary for Maven Project artifact1 3.5.4-SNAPSHOT:"); + inOrder.verify(logger).info(""); + inOrder.verify(logger).info("Maven Project artifact2 ............................ SKIPPED"); + inOrder.verify(logger).info("Maven Project artifact1 ............................ SUCCESS [ 1.000 s]"); + inOrder.verify(logger).info("Maven Project artifact3 ............................ SUCCESS [ 3.000 s]"); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + inOrder.verify(logger).info("BUILD SUCCESS"); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + inOrder.verify(logger).info(eq("Total time: {}{}"), anyString(), anyString()); + inOrder.verify(logger).info(eq("Finished at: {}"), anyString()); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + } + + @Test + void testSessionEndedFailureMixedWithSkippedModules() { + // prepare + MavenProject project1 = generateMavenProject("Maven Project artifact1"); + MavenProject project2 = generateMavenProject("Maven Project artifact2"); + MavenProject project3 = generateMavenProject("Maven Project artifact3"); + + MavenExecutionResult executionResult = new DefaultMavenExecutionResult(); + executionResult.addBuildSummary(new BuildSuccess(project1, 1000)); + executionResult.addBuildSummary(new BuildSuccess(project3, 3000)); + executionResult.addException(new Exception("Failure")); + + MavenExecutionRequest executionRequest = new DefaultMavenExecutionRequest(); + + ProjectDependencyGraph projectDependencyGraph = mock(ProjectDependencyGraph.class); + when(projectDependencyGraph.getSortedProjects()).thenReturn(Arrays.asList(project1, project2, project3)); + + MavenSession mavenSession = mock(MavenSession.class); + when(mavenSession.getResult()).thenReturn(executionResult); + when(mavenSession.getRequest()).thenReturn(executionRequest); + when(mavenSession.getProjects()).thenReturn(Arrays.asList(project1, project2, project3)); + when(mavenSession.getTopLevelProject()).thenReturn(project1); + when(mavenSession.getProjectDependencyGraph()).thenReturn(projectDependencyGraph); + + ExecutionEvent event = mock(ExecutionEvent.class); + when(event.getSession()).thenReturn(mavenSession); + + // execute + executionEventLogger.sessionEnded(event); + + // verify + InOrder inOrder = inOrder(logger); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + inOrder.verify(logger).info("Reactor Summary for Maven Project artifact1 3.5.4-SNAPSHOT:"); + inOrder.verify(logger).info(""); + inOrder.verify(logger).info("Maven Project artifact2 ............................ SKIPPED"); + inOrder.verify(logger).info("Maven Project artifact1 ............................ SUCCESS [ 1.000 s]"); + inOrder.verify(logger).info("Maven Project artifact3 ............................ SUCCESS [ 3.000 s]"); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + inOrder.verify(logger).error("BUILD FAILURE"); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + inOrder.verify(logger).info(eq("Total time: {}{}"), anyString(), anyString()); + inOrder.verify(logger).info(eq("Finished at: {}"), anyString()); + inOrder.verify(logger).info("------------------------------------------------------------------------"); + } + @Test void testSessionEndedFailureMultimodule() { // prepare @@ -379,11 +470,11 @@ void testSessionEndedFailureMultimodule() { inOrder.verify(logger).info("------------------------------------------------------------------------"); inOrder.verify(logger).info("Reactor Summary for Maven Project artifact1 3.5.4-SNAPSHOT:"); inOrder.verify(logger).info(""); - inOrder.verify(logger).info("..."); - inOrder.verify(logger).info("Maven Project artifact2 ............................ FAILURE [ 2.000 s]"); - inOrder.verify(logger).info("..."); + inOrder.verify(logger).info("Maven Project artifact3 ............................ SKIPPED"); + inOrder.verify(logger).info("Maven Project artifact1 ............................ SUCCESS [ 1.000 s]"); + inOrder.verify(logger).error("Maven Project artifact2 ............................ FAILURE [ 2.000 s]"); inOrder.verify(logger).info("------------------------------------------------------------------------"); - inOrder.verify(logger).info("BUILD FAILURE"); + inOrder.verify(logger).error("BUILD FAILURE"); inOrder.verify(logger).info("------------------------------------------------------------------------"); inOrder.verify(logger).info(eq("Total time: {}{}"), anyString(), anyString()); inOrder.verify(logger).info(eq("Finished at: {}"), anyString()); @@ -434,13 +525,14 @@ void testSessionEndedFailureMultimoduleWithSeparatedFailures() { inOrder.verify(logger).info("------------------------------------------------------------------------"); inOrder.verify(logger).info("Reactor Summary for Maven Project artifact1 3.5.4-SNAPSHOT:"); inOrder.verify(logger).info(""); - inOrder.verify(logger).info("..."); - inOrder.verify(logger).info("Maven Project artifact2 ............................ FAILURE [ 2.000 s]"); - inOrder.verify(logger).info("..."); - inOrder.verify(logger).info("Maven Project artifact5 ............................ FAILURE [ 5.000 s]"); - inOrder.verify(logger).info("..."); + inOrder.verify(logger).info("Maven Project artifact6 ............................ SKIPPED"); + inOrder.verify(logger).info("Maven Project artifact1 ............................ SUCCESS [ 1.000 s]"); + inOrder.verify(logger).info("Maven Project artifact3 ............................ SUCCESS [ 3.000 s]"); + inOrder.verify(logger).info("Maven Project artifact4 ............................ SUCCESS [ 4.000 s]"); + inOrder.verify(logger).error("Maven Project artifact2 ............................ FAILURE [ 2.000 s]"); + inOrder.verify(logger).error("Maven Project artifact5 ............................ FAILURE [ 5.000 s]"); inOrder.verify(logger).info("------------------------------------------------------------------------"); - inOrder.verify(logger).info("BUILD FAILURE"); + inOrder.verify(logger).error("BUILD FAILURE"); inOrder.verify(logger).info("------------------------------------------------------------------------"); inOrder.verify(logger).info(eq("Total time: {}{}"), anyString(), anyString()); inOrder.verify(logger).info(eq("Finished at: {}"), anyString()); diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng7967ArtifactHandlerLanguageTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng7967ArtifactHandlerLanguageTest.java index c61f602488ed..252af6e05cc4 100644 --- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng7967ArtifactHandlerLanguageTest.java +++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng7967ArtifactHandlerLanguageTest.java @@ -60,7 +60,7 @@ void javadocIsExecutedAndFailed() throws Exception { verifyTextNotInLog(logs, "[INFO] Not executing Javadoc as the project is not a Java classpath-capable package"); // javadoc invocation should actually fail the build - verifyTextInLog(logs, "[INFO] BUILD FAILURE"); + verifyTextInLog(logs, "[ERROR] BUILD FAILURE"); // javadoc invocation should actually fail the build verifyTextInLog(logs, "[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin");