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 2020/07/15 06:48:40 UTC

[maven-integration-testing] 01/01: [MNG-5760] Added more testcases for the --resume feature.

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

martinkanters pushed a commit to branch mng-5760-resume-feature-2
in repository https://gitbox.apache.org/repos/asf/maven-integration-testing.git

commit 68e8e36772edcc439a37968fddcd4228ba5b75e0
Author: Maarten Mulders <ma...@infosupport.com>
AuthorDate: Sat Jun 20 22:24:09 2020 +0200

    [MNG-5760] Added more testcases for the --resume feature.
    
    Enable test for --resume feature
    
    Verifying that resuming the build works when the resume.properties file does not have excludedProjects to skip in the next build.
    
    Enabled back temporarily ignored test.
    
    Added a test case for the --resume feature to skip failed modules after the first multi module project failed.
    
    Maven invocations without project shouldn't fail
---
 .../org/apache/maven/it/IntegrationTestSuite.java  |  3 +-
 .../maven/it/MavenITmng5760ResumeFeatureTest.java  | 73 ++++++++++++++++++++--
 .../{ => parent-dependent}/module-a/pom.xml        |  0
 .../test/java/org/apache/maven/it/TestCase.java    |  0
 .../{ => parent-dependent}/module-b/pom.xml        |  0
 .../test/java/org/apache/maven/it/TestCase.java    |  0
 .../{ => parent-dependent}/module-c/pom.xml        |  0
 .../test/java/org/apache/maven/it/TestCase.java    |  0
 .../{ => parent-dependent}/pom.xml                 |  0
 .../{ => parent-independent}/module-a/pom.xml      | 17 +++--
 .../test/java/org/apache/maven/it/TestCase.java    |  0
 .../{ => parent-independent}/module-b/pom.xml      | 17 +++--
 .../test/java/org/apache/maven/it/TestCase.java    |  0
 .../{ => parent-independent}/pom.xml               | 12 +---
 14 files changed, 94 insertions(+), 28 deletions(-)

diff --git a/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java b/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
index 67a2c8e..33dc60b 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
@@ -106,7 +106,8 @@ public class IntegrationTestSuite
         // Tests that don't run stable and need to be fixed
         // -------------------------------------------------------------------------------------------------------------
         // suite.addTestSuite( MavenIT0108SnapshotUpdateTest.class ); -- MNG-3137
-        
+
+        suite.addTestSuite( MavenITmng5760ResumeFeatureTest.class );
         suite.addTestSuite( MavenITmng6656BuildConsumer.class );
         suite.addTestSuite( MavenITmng6562WarnDefaultBindings.class );
         suite.addTestSuite( MavenITmng5868NoDuplicateAttachedArtifacts.class );
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 aa001a0..7342f31 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
@@ -40,11 +40,18 @@ import java.util.List;
  * @author Martin Kanters
  */
 public class MavenITmng5760ResumeFeatureTest extends AbstractMavenIntegrationTestCase {
-    private final File testDir;
+    private final File parentDependentTestDir;
+    private final File parentIndependentTestDir;
+    private final File noProjectTestDir;
 
     public MavenITmng5760ResumeFeatureTest() throws IOException {
         super( "[3.7.0,)" );
-        this.testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-5760-resume-feature" );
+        this.parentDependentTestDir = ResourceExtractor.simpleExtractResources( getClass(),
+                "/mng-5760-resume-feature/parent-dependent" );
+        this.parentIndependentTestDir = ResourceExtractor.simpleExtractResources( getClass(),
+                "/mng-5760-resume-feature/parent-independent" );
+        this.noProjectTestDir = ResourceExtractor.simpleExtractResources( getClass(),
+                "/mng-5760-resume-feature/no-project" );
     }
 
     /**
@@ -52,7 +59,7 @@ public class MavenITmng5760ResumeFeatureTest extends AbstractMavenIntegrationTes
      */
     public void testShouldSuggestToResumeWithoutArgs() throws Exception
     {
-        final Verifier verifier = newVerifier( testDir.getAbsolutePath() );
+        final Verifier verifier = newVerifier( parentDependentTestDir.getAbsolutePath() );
         verifier.addCliOption( "-Dmodule-b.fail=true" );
 
         try
@@ -69,11 +76,19 @@ public class MavenITmng5760ResumeFeatureTest extends AbstractMavenIntegrationTes
         {
             verifier.resetStreams();
         }
+
+        // New build with -r should resume the build from module-b, skipping module-a since it has succeeded already.
+        verifier.getCliOptions().clear();
+        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" );
     }
 
     public void testShouldSkipSuccessfulProjects() throws Exception
     {
-        final Verifier verifier = newVerifier( testDir.getAbsolutePath() );
+        final Verifier verifier = newVerifier( parentDependentTestDir.getAbsolutePath() );
         verifier.addCliOption( "-Dmodule-a.fail=true" );
         verifier.addCliOption( "--fail-at-end");
 
@@ -109,6 +124,56 @@ public class MavenITmng5760ResumeFeatureTest extends AbstractMavenIntegrationTes
         }
     }
 
+    public void testShouldSkipSuccessfulModulesWhenTheFirstModuleFailed() throws Exception
+    {
+        // 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.addCliOption( "-Dmodule-a.fail=true" );
+        verifier.addCliOption( "--fail-at-end");
+
+        try
+        {
+            verifier.executeGoal( "test" );
+            fail( "Expected this invocation to fail" );
+        }
+        catch ( final VerificationException ve )
+        {
+            verifier.verifyTextInLog( "mvn <args> -r" );
+        }
+        finally
+        {
+            verifier.resetStreams();
+        }
+
+        verifier.getCliOptions().clear();
+        verifier.addCliOption( "-r" );
+        verifier.executeGoal( "test" );
+        verifier.verifyTextInLog( "Building module-a 1.0" );
+        verifyTextNotInLog( verifier, "Building module-b 1.0" );
+    }
+
+    public void testShouldNotCrashWithoutProject() throws Exception
+    {
+        // There is no Maven project available in the test directory.
+        // As reported in JIRA this would previously break with a NullPointerException.
+        // (see https://issues.apache.org/jira/browse/MNG-5760?focusedCommentId=17143795&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17143795)
+        final Verifier verifier = newVerifier( noProjectTestDir.getAbsolutePath() );
+        try
+        {
+            verifier.executeGoal( "resources:resources" );
+        }
+        catch ( final VerificationException ve )
+        {
+            verifier.verifyTextInLog( "Goal requires a project to execute but there is no POM in this directory" );
+        }
+        finally
+        {
+            verifier.resetStreams();
+        }
+    }
+
     /**
      * Throws an exception if the text <strong>is</strong> present in the log.
      *
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/module-a/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/pom.xml
similarity index 100%
copy from core-it-suite/src/test/resources/mng-5760-resume-feature/module-a/pom.xml
copy to core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/pom.xml
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/module-a/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/src/test/java/org/apache/maven/it/TestCase.java
similarity index 100%
copy from core-it-suite/src/test/resources/mng-5760-resume-feature/module-a/src/test/java/org/apache/maven/it/TestCase.java
copy to core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/src/test/java/org/apache/maven/it/TestCase.java
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/module-b/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/pom.xml
similarity index 100%
copy from core-it-suite/src/test/resources/mng-5760-resume-feature/module-b/pom.xml
copy to core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/pom.xml
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/module-b/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/src/test/java/org/apache/maven/it/TestCase.java
similarity index 100%
copy from core-it-suite/src/test/resources/mng-5760-resume-feature/module-b/src/test/java/org/apache/maven/it/TestCase.java
copy to core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/src/test/java/org/apache/maven/it/TestCase.java
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/module-c/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/pom.xml
similarity index 100%
rename from core-it-suite/src/test/resources/mng-5760-resume-feature/module-c/pom.xml
rename to core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/pom.xml
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/module-c/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/src/test/java/org/apache/maven/it/TestCase.java
similarity index 100%
rename from core-it-suite/src/test/resources/mng-5760-resume-feature/module-c/src/test/java/org/apache/maven/it/TestCase.java
rename to core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/src/test/java/org/apache/maven/it/TestCase.java
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/pom.xml
similarity index 100%
copy from core-it-suite/src/test/resources/mng-5760-resume-feature/pom.xml
copy to core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/pom.xml
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/module-a/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/pom.xml
similarity index 77%
rename from core-it-suite/src/test/resources/mng-5760-resume-feature/module-a/pom.xml
rename to core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/pom.xml
index 2fc5193..b7a0c07 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/pom.xml
@@ -25,12 +25,17 @@ under the License.
 
     <modelVersion>4.0.0</modelVersion>
 
+    <groupId>org.apache.maven.its.mng5760.parentindependent</groupId>
     <artifactId>module-a</artifactId>
-
-    <parent>
-        <groupId>org.apache.maven.its.mng5760</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
+    <version>1.0</version>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/module-a/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/src/test/java/org/apache/maven/it/TestCase.java
similarity index 100%
rename from core-it-suite/src/test/resources/mng-5760-resume-feature/module-a/src/test/java/org/apache/maven/it/TestCase.java
rename to core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/src/test/java/org/apache/maven/it/TestCase.java
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/module-b/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/pom.xml
similarity index 77%
rename from core-it-suite/src/test/resources/mng-5760-resume-feature/module-b/pom.xml
rename to core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/pom.xml
index d415157..4b8e415 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/pom.xml
@@ -25,12 +25,17 @@ under the License.
 
     <modelVersion>4.0.0</modelVersion>
 
+    <groupId>org.apache.maven.its.mng5760.parentindependent</groupId>
     <artifactId>module-b</artifactId>
-
-    <parent>
-        <groupId>org.apache.maven.its.mng5760</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
+    <version>1.0</version>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/module-b/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/src/test/java/org/apache/maven/it/TestCase.java
similarity index 100%
rename from core-it-suite/src/test/resources/mng-5760-resume-feature/module-b/src/test/java/org/apache/maven/it/TestCase.java
rename to core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/src/test/java/org/apache/maven/it/TestCase.java
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/pom.xml
similarity index 83%
rename from core-it-suite/src/test/resources/mng-5760-resume-feature/pom.xml
rename to core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/pom.xml
index ca797e0..45463c5 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/pom.xml
@@ -24,7 +24,7 @@ under the License.
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.apache.maven.its.mng5760</groupId>
+    <groupId>org.apache.maven.its.mng5760.parentindependent</groupId>
     <artifactId>parent</artifactId>
     <version>1.0</version>
 
@@ -44,16 +44,6 @@ under the License.
     <modules>
         <module>module-a</module>
         <module>module-b</module>
-        <module>module-c</module>
     </modules>
 
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
 </project>