Author: rfscholte
Date: Sat Jan 18 16:54:55 2014
New Revision: 1559362

URL: http://svn.apache.org/r1559362
Log:
[MENFORCER-177] Support packagings for RequirePrerequisite rule, always ignore 
pom

Modified:
    
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePrerequisite.java
    
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequirePrerequisiteTest.java

Modified: 
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePrerequisite.java
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePrerequisite.java?rev=1559362&r1=1559361&r2=1559362&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePrerequisite.java
 (original)
+++ 
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePrerequisite.java
 Sat Jan 18 16:54:55 2014
@@ -19,6 +19,8 @@ package org.apache.maven.plugins.enforce
  * under the License.
  */
 
+import java.util.List;
+
 import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
@@ -35,6 +37,13 @@ import org.codehaus.plexus.component.con
 public class RequirePrerequisite extends AbstractNonCacheableEnforcerRule
 {
     /**
+     * Only the projects with one of these packagings will be enforced to have 
the correct prerequisite.
+     *  
+     * @since 1.3.2
+     */
+    private List<String> packagings;
+    
+    /**
      * Can either be version or a range, e.g. {@code 2.2.1} or {@code [2.2.1,)}
      */
     private String mavenVersion;
@@ -52,6 +61,17 @@ public class RequirePrerequisite extends
     }
     
     /**
+     * Only the projects with one of these packagings will be enforced to have 
the correct prerequisite.
+     * 
+     * @since 1.3.2
+     * @param packagings the list of packagings
+     */
+    public void setPackagings( List<String> packagings )
+    {
+        this.packagings = packagings;
+    }
+    
+    /**
      * {@inheritDoc}
      */
     public void execute( EnforcerRuleHelper helper )
@@ -60,6 +80,18 @@ public class RequirePrerequisite extends
         try
         {
             MavenProject project = (MavenProject) helper.evaluate( 
"${project}" );
+
+            if ( "pom".equals( project.getPackaging() ) )
+            {
+                helper.getLog().debug( "Packaging is pom, skipping 
requirePrerequisite rule" );
+                return;
+            }
+
+            if ( packagings != null && !packagings.contains( 
project.getPackaging() ) )
+            {
+                helper.getLog().debug( "Packaging is " + 
project.getPackaging() + ", skipping requirePrerequisite rule" );
+                return;
+            }
             
             Prerequisites prerequisites = project.getPrerequisites(); 
             

Modified: 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequirePrerequisiteTest.java
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequirePrerequisiteTest.java?rev=1559362&r1=1559361&r2=1559362&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequirePrerequisiteTest.java
 (original)
+++ 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequirePrerequisiteTest.java
 Sat Jan 18 16:54:55 2014
@@ -19,24 +19,34 @@ package org.apache.maven.plugins.enforce
  * under the License.
  */
 
+import java.util.Collections;
+
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.model.Prerequisites;
+import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
 import 
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.junit.Before;
 import org.junit.Test;
+
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 public class RequirePrerequisiteTest
 {
     private MavenProject project;
+
     private EnforcerRuleHelper helper;
 
     @Before
-    public void before() throws ExpressionEvaluationException {
+    public void before()
+        throws ExpressionEvaluationException
+    {
         project = mock( MavenProject.class );
+        when( project.getPackaging() ).thenReturn( "maven-plugin" );
+
         helper = mock( EnforcerRuleHelper.class );
         when( helper.evaluate( "${project}" ) ).thenReturn( project );
     }
@@ -48,7 +58,7 @@ public class RequirePrerequisiteTest
         RequirePrerequisite rule = new RequirePrerequisite();
         rule.execute( helper );
     }
-    
+
     @Test
     public void testNoSpecifiedPrerequisite()
         throws Exception
@@ -82,9 +92,23 @@ public class RequirePrerequisiteTest
         rule.execute( helper );
     }
 
+    @Test( expected = EnforcerRuleException.class )
+    public void testMavenRangesPrerequisite()
+        throws Exception
+    {
+        Prerequisites prerequisites = new Prerequisites();
+        prerequisites.setMaven( "2.2.0" );
+        when( project.getPrerequisites() ).thenReturn( prerequisites );
+
+        RequirePrerequisite rule = new RequirePrerequisite();
+        rule.setMavenVersion( "[2.0.6,2.1.0),(2.1.0,2.2.0),(2.2.0,)" );
+
+        rule.execute( helper );
+    }
+
     @Test
     public void testValidPrerequisite()
-                    throws Exception
+        throws Exception
     {
         Prerequisites prerequisites = new Prerequisites();
         prerequisites.setMaven( "3.0" );
@@ -92,7 +116,50 @@ public class RequirePrerequisiteTest
 
         RequirePrerequisite rule = new RequirePrerequisite();
         rule.setMavenVersion( "2.2.1" );
-        
+
+        rule.execute( helper );
+    }
+
+    @Test
+    public void testPomPackaging()
+        throws Exception
+    {
+        when( project.getPackaging() ).thenReturn( "pom" );
+
+        Log log = mock( Log.class );
+        when( helper.getLog() ).thenReturn( log );
+
+        RequirePrerequisite rule = new RequirePrerequisite();
+        rule.execute( helper );
+
+        verify( log ).debug( "Packaging is pom, skipping requirePrerequisite 
rule" );
+    }
+
+    @Test( expected = EnforcerRuleException.class )
+    public void testMatchingPackagings()
+        throws Exception
+    {
+        when( project.getPackaging() ).thenReturn( "maven-plugin" );
+
+        RequirePrerequisite rule = new RequirePrerequisite();
+        rule.setPackagings( Collections.singletonList( "maven-plugin" ) );
+        rule.execute( helper );
+    }
+
+    @Test
+    public void testNotMatchingPackagings()
+        throws Exception
+    {
+        when( project.getPackaging() ).thenReturn( "jar" );
+
+        Log log = mock( Log.class );
+        when( helper.getLog() ).thenReturn( log );
+
+        RequirePrerequisite rule = new RequirePrerequisite();
+        rule.setPackagings( Collections.singletonList( "maven-plugin" ) );
         rule.execute( helper );
+
+        verify( log ).debug( "Packaging is jar, skipping requirePrerequisite 
rule" );
     }
+
 }


Reply via email to