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" ); } + }