You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2022/05/30 20:34:15 UTC

[maven-enforcer] 01/01: [MENFORCER-389] Allow filtering of parent in requireReleaseDeps

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

sjaranowski pushed a commit to branch MENFORCER-389
in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git

commit 441a02fde5232abde685d12667f3838ed7878307
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Mon May 30 22:33:21 2022 +0200

    [MENFORCER-389] Allow filtering of parent in requireReleaseDeps
---
 .../maven/plugins/enforcer/RequireReleaseDeps.java | 17 +++++++---
 .../plugins/enforcer/TestRequireReleaseDeps.java   | 36 ++++++++++++++++++----
 2 files changed, 43 insertions(+), 10 deletions(-)

diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
index 783ea70..783b9b3 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
@@ -19,8 +19,10 @@ package org.apache.maven.plugins.enforcer;
  * under the License.
  */
 
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 
 import org.apache.maven.artifact.Artifact;
@@ -43,8 +45,6 @@ public class RequireReleaseDeps
     /**
      * Allows this rule to execute only when this project is a release.
      *
-     * @parameter
-     * 
      * @see {@link #setOnlyWhenRelease(boolean)}
      * @see {@link #isOnlyWhenRelease()}
 
@@ -54,8 +54,6 @@ public class RequireReleaseDeps
     /**
      * Allows this rule to fail when the parent is defined as a snapshot.
      *
-     * @parameter
-     * 
      * @see {@link #setFailWhenParentIsSnapshot(boolean)}
      * @see {@link #isFailWhenParentIsSnapshot()}
      */
@@ -98,6 +96,7 @@ public class RequireReleaseDeps
         {
             callSuper = true;
         }
+
         if ( callSuper )
         {
             super.execute( helper );
@@ -107,7 +106,17 @@ public class RequireReleaseDeps
                 {
                     project = getProject( helper );
                 }
+
                 Artifact parentArtifact = project.getParentArtifact();
+
+                if ( parentArtifact != null )
+                {
+                    Set<Artifact> artifacts = filterArtifacts( Collections.singleton( parentArtifact ) );
+                    parentArtifact = Optional.ofNullable( artifacts )
+                        .flatMap( s -> s.stream().findFirst() )
+                        .orElse( null );
+                }
+
                 if ( parentArtifact != null && parentArtifact.isSnapshot() )
                 {
                     throw new EnforcerRuleException( "Parent Cannot be a snapshot: " + parentArtifact.getId() );
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java
index 5582d12..89a2fa6 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java
@@ -19,6 +19,7 @@ package org.apache.maven.plugins.enforcer;
  * under the License.
  */
 
+import java.io.IOException;
 import java.util.Collections;
 import java.util.Set;
 
@@ -30,12 +31,14 @@ import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuildingRequest;
 import org.junit.jupiter.api.Test;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /**
- * The Class TestNoSnapshots.
+ * The Class TestRequireReleaseDeps.
  *
  * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
  */
-public class TestRequireReleaseDeps
+class TestRequireReleaseDeps
 {
 
     /**
@@ -44,7 +47,7 @@ public class TestRequireReleaseDeps
      * @throws Exception if any occurs
      */
     @Test
-    public void testRule()
+    void testRule()
         throws Exception
     {
         ArtifactStubFactory factory = new ArtifactStubFactory();
@@ -90,7 +93,7 @@ public class TestRequireReleaseDeps
     }
 
     @Test
-    public void testWildcardIgnore()
+    void testWildcardIgnore()
         throws Exception
     {
         RequireReleaseDeps rule = newRequireReleaseDeps();
@@ -112,12 +115,33 @@ public class TestRequireReleaseDeps
      * Test id.
      */
     @Test
-    public void testId()
+    void testId()
     {
         RequireReleaseDeps rule = newRequireReleaseDeps();
-        rule.getCacheId();
+        assertThat( rule.getCacheId() ).isEqualTo( "0" );
     }
 
+    @Test
+    void parentShouldBeExcluded() throws IOException
+    {
+
+        ArtifactStubFactory factory = new ArtifactStubFactory();
+        MockProject project = new MockProject();
+        project.setArtifact( factory.getSnapshotArtifact() );
+
+        MavenProject parent = new MockProject();
+        parent.setArtifact( factory.getSnapshotArtifact() );
+        project.setParent( parent );
+
+        EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
+
+        RequireReleaseDeps rule = newRequireReleaseDeps();
+        rule.setExcludes( Collections.singletonList( parent.getArtifact().getGroupId() + ":*" ) );
+
+        EnforcerRuleUtilsHelper.execute( rule, helper, false );
+    }
+
+
     private RequireReleaseDeps newRequireReleaseDeps()
     {
         return new RequireReleaseDeps()