From a6954b96e651e36f8f2804776017776c87041069 Mon Sep 17 00:00:00 2001 From: Michael Osipov Date: Sat, 26 Dec 2020 14:51:12 +0100 Subject: [PATCH] [MNG-5760] Add `-r/--resume` to automatically resume from the last failure point Use a fresh, preconfigured verifier and do not clear CLI options because on clear all preconfigurations, especially global settings are gone. This issue can be observed when Maven is ran with MNG-4645 where preconfigured Maven Central is lost in global settings. This closes #93 --- .../maven/it/MavenITmng5760ResumeFeatureTest.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5760ResumeFeatureTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5760ResumeFeatureTest.java index 9a339f281..d4cbab932 100644 --- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5760ResumeFeatureTest.java +++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5760ResumeFeatureTest.java @@ -59,7 +59,7 @@ public MavenITmng5760ResumeFeatureTest() throws IOException { */ public void testShouldSuggestToResumeWithoutArgs() throws Exception { - final Verifier verifier = newVerifier( parentDependentTestDir.getAbsolutePath() ); + Verifier verifier = newVerifier( parentDependentTestDir.getAbsolutePath() ); verifier.addCliOption( "-Dmodule-b.fail=true" ); try @@ -78,17 +78,18 @@ public void testShouldSuggestToResumeWithoutArgs() throws Exception } // New build with -r should resume the build from module-b, skipping module-a since it has succeeded already. - verifier.getCliOptions().clear(); + verifier = newVerifier( parentDependentTestDir.getAbsolutePath() ); verifier.addCliOption( "-r" ); verifier.executeGoal( "test" ); verifyTextNotInLog( verifier, "Building module-a 1.0" ); verifier.verifyTextInLog( "Building module-b 1.0" ); verifier.verifyTextInLog( "Building module-c 1.0" ); + verifier.resetStreams(); } public void testShouldSkipSuccessfulProjects() throws Exception { - final Verifier verifier = newVerifier( parentDependentTestDir.getAbsolutePath() ); + Verifier verifier = newVerifier( parentDependentTestDir.getAbsolutePath() ); verifier.addCliOption( "-Dmodule-a.fail=true" ); verifier.addCliOption( "--fail-at-end"); @@ -106,9 +107,8 @@ public void testShouldSkipSuccessfulProjects() throws Exception verifier.resetStreams(); } - verifier.getCliOptions().clear(); - // Let module-b and module-c fail, if they would have been built... + verifier = newVerifier( parentDependentTestDir.getAbsolutePath() ); verifier.addCliOption( "-Dmodule-b.fail=true" ); verifier.addCliOption( "-Dmodule-c.fail=true" ); // ... but adding -r should exclude those two from the build because the previous Maven invocation @@ -129,7 +129,7 @@ public void testShouldSkipSuccessfulModulesWhenTheFirstModuleFailed() throws Exc // In this multi-module project, the submodules are not dependent on the parent. // This results in the parent to be built last, and module-a to be built first. // This enables us to let the first module in the reactor (module-a) fail. - final Verifier verifier = newVerifier( parentIndependentTestDir.getAbsolutePath() ); + Verifier verifier = newVerifier( parentIndependentTestDir.getAbsolutePath() ); verifier.addCliOption( "-Dmodule-a.fail=true" ); verifier.addCliOption( "--fail-at-end"); @@ -147,11 +147,12 @@ public void testShouldSkipSuccessfulModulesWhenTheFirstModuleFailed() throws Exc verifier.resetStreams(); } - verifier.getCliOptions().clear(); + verifier = newVerifier( parentIndependentTestDir.getAbsolutePath() ); verifier.addCliOption( "-r" ); verifier.executeGoal( "test" ); verifier.verifyTextInLog( "Building module-a 1.0" ); verifyTextNotInLog( verifier, "Building module-b 1.0" ); + verifier.resetStreams(); } public void testShouldNotCrashWithoutProject() throws Exception