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:14 UTC

[maven-enforcer] branch MENFORCER-389 created (now 441a02f)

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

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


      at 441a02f  [MENFORCER-389] Allow filtering of parent in requireReleaseDeps

This branch includes the following new commits:

     new 441a02f  [MENFORCER-389] Allow filtering of parent in requireReleaseDeps

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



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

Posted by sj...@apache.org.
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()