Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java?rev=604897&r1=604896&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java (original) +++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java Mon Dec 17 07:24:43 2007 @@ -1,8 +1,5 @@ package org.apache.maven.plugins.enforcer; -import java.util.Iterator; - -import org.apache.maven.artifact.Artifact; import org.apache.maven.enforcer.rule.api.EnforcerRule; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; @@ -10,28 +7,18 @@ import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; /** - * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a> - * - * This rule checks that the current project is not a - * snapshot + * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a> This rule checks that the current project is not a snapshot */ public class RequireReleaseVersion - implements EnforcerRule + extends AbstractStandardEnforcerRule { - /** - * Specify a friendly message if the rule fails. - * - * @parameter - */ - public String message = null; - /* * (non-Javadoc) * * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper) */ - public void execute ( EnforcerRuleHelper theHelper ) + public void execute( EnforcerRuleHelper theHelper ) throws EnforcerRuleException { try @@ -61,7 +48,7 @@ * * @see org.apache.maven.enforcer.rule.api.EnforcerRule#getCacheId() */ - public String getCacheId () + public String getCacheId() { return "0"; } @@ -71,7 +58,7 @@ * * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isCacheable() */ - public boolean isCacheable () + public boolean isCacheable() { return false; } @@ -81,7 +68,7 @@ * * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isResultValid(org.apache.maven.enforcer.rule.api.EnforcerRule) */ - public boolean isResultValid ( EnforcerRule theCachedRule ) + public boolean isResultValid( EnforcerRule theCachedRule ) { return false; }
Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/bannedDependencies.apt URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/bannedDependencies.apt?rev=604897&r1=598486&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/bannedDependencies.apt (original) +++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/bannedDependencies.apt Mon Dec 17 07:24:43 2007 @@ -64,6 +64,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0</version> <executions> <execution> <id>enforce-banned-dependencies</id> Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/evaluateBeanshell.apt URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/evaluateBeanshell.apt?rev=604897&r1=598486&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/evaluateBeanshell.apt (original) +++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/evaluateBeanshell.apt Mon Dec 17 07:24:43 2007 @@ -47,6 +47,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0</version> <executions> <execution> <id>enforce-beanshell</id> Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/index.apt URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/index.apt?rev=604897&r1=598486&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/index.apt (original) +++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/index.apt Mon Dec 17 07:24:43 2007 @@ -32,7 +32,7 @@ * {{{evaluateBeanshell.html}evaluateBeanshell}} - evaluates a beanshell script. - * {{{noSnapshots.html}noSnapshots}} - enforces that no snapshots are included. + * {{{requireReleaseDeps.html}requireReleaseDeps}} - enforces that no snapshots are included as dependencies. * {{{requireMavenVersion.html}requireMavenVersion}} - enforces the Maven version. Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/noSnapshots.apt URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/noSnapshots.apt?rev=604897&r1=598486&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/noSnapshots.apt (original) +++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/noSnapshots.apt Mon Dec 17 07:24:43 2007 @@ -47,6 +47,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0</version> <executions> <execution> <id>enforce-no-snapshots</id> Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireJavaVersion.apt URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireJavaVersion.apt?rev=604897&r1=598486&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireJavaVersion.apt (original) +++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireJavaVersion.apt Mon Dec 17 07:24:43 2007 @@ -54,7 +54,7 @@ mvn enforcer:display-info ... [enforcer:display-info] - Maven Version: 2.0.6 + Maven Version: 2.0.8 JDK Version: 1.5.0_11 normalized as: 1.5.0-11 OS Info: Arch: x86 Family: windows Name: windows xp Version: 5.1 +---+ @@ -69,6 +69,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0</version> <executions> <execution> <id>enforce-java</id> Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireMavenVersion.apt URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireMavenVersion.apt?rev=604897&r1=598486&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireMavenVersion.apt (original) +++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireMavenVersion.apt Mon Dec 17 07:24:43 2007 @@ -45,6 +45,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0</version> <executions> <execution> <id>enforce-java</id> Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireNoRepositories.apt URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireNoRepositories.apt?rev=604897&r1=598486&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireNoRepositories.apt (original) +++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireNoRepositories.apt Mon Dec 17 07:24:43 2007 @@ -57,6 +57,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0</version> <executions> <execution> <id>enforce-plugin-versions</id> Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireOS.apt URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireOS.apt?rev=604897&r1=598486&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireOS.apt (original) +++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireOS.apt Mon Dec 17 07:24:43 2007 @@ -114,6 +114,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0</version> <executions> <execution> <id>enforce-os</id> Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requirePluginVersions.apt URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requirePluginVersions.apt?rev=604897&r1=598486&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requirePluginVersions.apt (original) +++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requirePluginVersions.apt Mon Dec 17 07:24:43 2007 @@ -57,6 +57,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0</version> <executions> <execution> <id>enforce-plugin-versions</id> Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireProperty.apt URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireProperty.apt?rev=604897&r1=598486&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireProperty.apt (original) +++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireProperty.apt Mon Dec 17 07:24:43 2007 @@ -50,6 +50,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0</version> <executions> <execution> <id>enforce-property</id> Added: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireReleaseDeps.apt URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireReleaseDeps.apt?rev=604897&view=auto ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireReleaseDeps.apt (added) +++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireReleaseDeps.apt Mon Dec 17 07:24:43 2007 @@ -0,0 +1,72 @@ +~~ Licensed to the Apache Software Foundation (ASF) under one +~~ or more contributor license agreements. See the NOTICE file +~~ distributed with this work for additional information +~~ regarding copyright ownership. The ASF licenses this file +~~ to you under the Apache License, Version 2.0 (the +~~ "License"); you may not use this file except in compliance +~~ with the License. You may obtain a copy of the License at +~~ +~~ http://www.apache.org/licenses/LICENSE-2.0 +~~ +~~ Unless required by applicable law or agreed to in writing, +~~ software distributed under the License is distributed on an +~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +~~ KIND, either express or implied. See the License for the +~~ specific language governing permissions and limitations +~~ under the License. + + ------ + Require Release Dependencies + ------ + Brian Fox + ------ + November 2007 + ------ + +Require Release Dependencies + + This rule checks the dependencies and fails if any snapshots are found. + + + The following parameters are supported by this rule: + + * searchTransitive - if transitive dependencies should be checked. + + * message - an optional message to the user if the rule fails. + + [] + + + Sample Plugin Configuration: + ++---+ +<project> + [...] + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0</version> + <executions> + <execution> + <id>enforce-no-snapshots</id> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requireReleaseDeps> + <message>No Snapshots Allowed!</message> + </requireReleaseDeps> + </rules> + <fail>true</fail> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + [...] +</project> ++---+ \ No newline at end of file Modified: maven/enforcer/trunk/enforcer-rules/src/site/site.xml URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/site.xml?rev=604897&r1=598486&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/site/site.xml (original) +++ maven/enforcer/trunk/enforcer-rules/src/site/site.xml Mon Dec 17 07:24:43 2007 @@ -1,23 +1,19 @@ <?xml version="1.0" encoding="ISO-8859-1"?> <!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * ---> + ~ Copyright 2006 The Apache Software Foundation. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> <project> <body> Modified: maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java?rev=604897&r1=604896&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java (original) +++ maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java Mon Dec 17 07:24:43 2007 @@ -26,12 +26,12 @@ import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Plugin; import org.apache.maven.plugin.logging.SystemStreamLog; +import org.apache.maven.plugins.enforcer.utils.MockEnforcerExpressionEvaluator; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator; /** * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a> - * */ public class EnforcerTestUtils { @@ -43,20 +43,35 @@ public static EnforcerRuleHelper getHelper() { - MavenSession session = getMavenSession(); - ExpressionEvaluator eval = new EnforcerExpressionEvaluator( session, new MockPathTranslator(), - new MockProject() ); - return new DefaultEnforcementRuleHelper( session, eval, new SystemStreamLog(), null ); + return getHelper( new MockProject(), false ); + } + + public static EnforcerRuleHelper getHelper( boolean mockExpression ) + { + return getHelper( new MockProject(), mockExpression ); + } + + public static EnforcerRuleHelper getHelper( MavenProject project ) + { + return getHelper( project, false ); } - public static EnforcerRuleHelper getHelper(MavenProject project) { + public static EnforcerRuleHelper getHelper( MavenProject project, boolean mockExpression ) + { MavenSession session = getMavenSession(); - ExpressionEvaluator eval = new EnforcerExpressionEvaluator( session, new MockPathTranslator(), - project ); - return new DefaultEnforcementRuleHelper( session, eval, new SystemStreamLog(),null ); + ExpressionEvaluator eval; + if ( mockExpression ) + { + eval = new MockEnforcerExpressionEvaluator( session, new MockPathTranslator(), project ); + } + else + { + eval = new EnforcerExpressionEvaluator( session, new MockPathTranslator(), project ); + } + return new DefaultEnforcementRuleHelper( session, eval, new SystemStreamLog(), null ); } - - public static Plugin newPlugin(String groupId, String artifactId, String version) + + public static Plugin newPlugin( String groupId, String artifactId, String version ) { Plugin plugin = new Plugin(); plugin.setArtifactId( artifactId ); Modified: maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java?rev=604897&r1=604896&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java (original) +++ maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java Mon Dec 17 07:24:43 2007 @@ -23,7 +23,6 @@ import junit.framework.TestCase; -import org.apache.maven.enforcer.rule.api.EnforcerRuleException; import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; import org.apache.maven.plugin.testing.ArtifactStubFactory; import org.apache.maven.plugins.enforcer.utils.TestEnforcerRuleUtils; @@ -45,8 +44,7 @@ EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project ); project.setArtifacts( factory.getMixedArtifacts() ); project.setDependencyArtifacts( factory.getScopedArtifacts() ); - NoSnapshots rule = new NoSnapshots(); - + RequireReleaseDeps rule = new RequireReleaseDeps(); rule.setSearchTransitive( false ); TestEnforcerRuleUtils.execute( rule, helper, false ); @@ -60,7 +58,7 @@ public void testId () { - NoSnapshots rule = new NoSnapshots(); + RequireReleaseDeps rule = new RequireReleaseDeps(); rule.getCacheId(); } } Modified: maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java?rev=604897&r1=604896&r2=604897&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java (original) +++ maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java Mon Dec 17 07:24:43 2007 @@ -28,7 +28,6 @@ import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import org.apache.maven.artifact.resolver.ArtifactResolutionException; -import org.apache.maven.enforcer.rule.api.EnforcerRuleException; import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; import org.apache.maven.model.Plugin; import org.apache.maven.plugin.MojoExecutionException; @@ -38,15 +37,13 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParserException; /** - * * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a> - * */ public class TestRequirePluginVersions extends AbstractMojoTestCase { - public void testHasVersionSpecified () + public void testHasVersionSpecified() { Plugin source = new Plugin(); source.setArtifactId( "foo" ); @@ -79,39 +76,102 @@ rule.setBanRelease( false ); rule.setBanSnapshots( false ); - assertTrue( rule.hasVersionSpecified( source, plugins ) ); + EnforcerRuleHelper helper = EnforcerTestUtils.getHelper(); + + assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) ); // check that LATEST is allowed source.setArtifactId( "c-artifact" ); - assertTrue( rule.hasVersionSpecified( source, plugins ) ); + assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) ); // check that LATEST is banned rule.setBanLatest( true ); - assertFalse( rule.hasVersionSpecified( source, plugins ) ); + assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) ); // check that LATEST is exhausively checked rule.setBanSnapshots( false ); source.setArtifactId( "f-artifact" ); - assertFalse( rule.hasVersionSpecified( source, plugins ) ); + assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) ); rule.setBanLatest( false ); rule.setBanSnapshots( true ); - assertFalse( rule.hasVersionSpecified( source, plugins ) ); + assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) ); // check that RELEASE is allowed source.setArtifactId( "d-artifact" ); - assertTrue( rule.hasVersionSpecified( source, plugins ) ); + assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) ); // check that RELEASE is banned rule.setBanRelease( true ); - assertFalse( rule.hasVersionSpecified( source, plugins ) ); + assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) ); - // check that RELEASE is exhausively checked + // check that RELEASE is exhaustively checked source.setArtifactId( "e-artifact" ); - assertFalse( rule.hasVersionSpecified( source, plugins ) ); + assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) ); } - public void testGetAllPlugins () + + public void testHasVersionSpecifiedWithProperties() + { + Plugin source = new Plugin(); + source.setGroupId( "group" ); + + // setup the plugins. + List plugins = new ArrayList(); + plugins.add( EnforcerTestUtils.newPlugin( "group", "a-artifact", "1.0-${SNAPSHOT}" ) ); + plugins.add( EnforcerTestUtils.newPlugin( "group", "b-artifact", "${1.0}" ) ); + plugins.add( EnforcerTestUtils.newPlugin( "group", "c-artifact", "${LATEST}" ) ); + plugins.add( EnforcerTestUtils.newPlugin( "group", "d-artifact", "${RELEASE}" ) ); + plugins.add( EnforcerTestUtils.newPlugin( "group", "e-artifact", "${}" ) ); + plugins.add( EnforcerTestUtils.newPlugin( "group", "f-artifact", "${ }" ) ); + + + RequirePluginVersions rule = new RequirePluginVersions(); + rule.setBanLatest( false ); + rule.setBanRelease( false ); + rule.setBanSnapshots( false ); + + EnforcerRuleHelper helper = EnforcerTestUtils.getHelper(true); + + source.setArtifactId( "a-artifact" ); + assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) ); + + source.setArtifactId( "b-artifact" ); + assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) ); + + source.setArtifactId( "c-artifact" ); + assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) ); + + source.setArtifactId( "d-artifact" ); + assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) ); + + //this one checks empty property values + source.setArtifactId( "e-artifact" ); + assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) ); + + // this one checks empty property values + source.setArtifactId( "f-artifact" ); + assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) ); + + rule.setBanLatest( true ); + source.setArtifactId( "c-artifact" ); + assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) ); + + rule.setBanRelease( true ); + source.setArtifactId( "d-artifact" ); + assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) ); + + rule.setBanSnapshots( true ); + source.setArtifactId( "a-artifact" ); + assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) ); + + //release versions should pass everything + source.setArtifactId( "b-artifact" ); + assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) ); + } + + + public void testGetAllPlugins() throws ArtifactResolutionException, ArtifactNotFoundException, IOException, XmlPullParserException { RequirePluginVersions rule = new RequirePluginVersions(); @@ -134,13 +194,14 @@ assertEquals( 3, plugins.size() ); } - public void testGetAdditionalPluginsNull () throws MojoExecutionException + public void testGetAdditionalPluginsNull() + throws MojoExecutionException { RequirePluginVersions rule = new RequirePluginVersions(); rule.addAdditionalPlugins( null, null ); } - - public void testGetAdditionalPluginsInvalidFormat () + + public void testGetAdditionalPluginsInvalidFormat() { RequirePluginVersions rule = new RequirePluginVersions(); @@ -173,7 +234,7 @@ } - public void testGetAdditionalPluginsEmptySet () + public void testGetAdditionalPluginsEmptySet() throws MojoExecutionException { RequirePluginVersions rule = new RequirePluginVersions(); @@ -188,7 +249,7 @@ additional.add( "group:another-artifact" ); // make sure a null set can be handled - Set results = rule.addAdditionalPlugins( null , additional); + Set results = rule.addAdditionalPlugins( null, additional ); assertNotNull( results ); assertContainsPlugin( "group", "a-artifact", results ); @@ -196,7 +257,7 @@ } - public void testGetAdditionalPlugins () + public void testGetAdditionalPlugins() throws MojoExecutionException { RequirePluginVersions rule = new RequirePluginVersions(); @@ -220,7 +281,7 @@ } - private void assertContainsPlugin ( String group, String artifact, Set theSet ) + private void assertContainsPlugin( String group, String artifact, Set theSet ) { Plugin p = new Plugin(); p.setGroupId( group ); @@ -228,7 +289,7 @@ assertTrue( theSet.contains( p ) ); } - public void testId () + public void testId() { RequirePluginVersions rule = new RequirePluginVersions(); rule.getCacheId(); Added: maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java?rev=604897&view=auto ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java (added) +++ maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java Mon Dec 17 07:24:43 2007 @@ -0,0 +1,35 @@ +package org.apache.maven.plugins.enforcer.utils; + +import org.apache.maven.execution.MavenSession; +import org.apache.maven.plugins.enforcer.EnforcerExpressionEvaluator; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.path.PathTranslator; +import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; + +public class MockEnforcerExpressionEvaluator + extends EnforcerExpressionEvaluator +{ + + public MockEnforcerExpressionEvaluator( MavenSession theContext, PathTranslator thePathTranslator, + MavenProject theProject ) + { + super( theContext, thePathTranslator, theProject ); + // TODO Auto-generated constructor stub + } + + public Object evaluate( String expr ) + throws ExpressionEvaluationException + { + if (expr !=null) + { + //just remove the ${ } and return the name as the value + return expr.replaceAll( "\\$\\{|}", "" ); + } + else + { + return expr; + } + } + + +} Added: maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java?rev=604897&view=auto ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java (added) +++ maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java Mon Dec 17 07:24:43 2007 @@ -0,0 +1,41 @@ +package org.apache.maven.plugins.enforcer.utils; + +import junit.framework.TestCase; + +import org.apache.maven.execution.MavenSession; +import org.apache.maven.plugins.enforcer.EnforcerExpressionEvaluator; +import org.apache.maven.plugins.enforcer.EnforcerTestUtils; +import org.apache.maven.plugins.enforcer.MockPathTranslator; +import org.apache.maven.plugins.enforcer.MockProject; +import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; + +public class TestMockEnforcerExpressionEvaluator + extends TestCase +{ + + public void testEvaluate() + { + MavenSession session = EnforcerTestUtils.getMavenSession(); + + EnforcerExpressionEvaluator ev = + new MockEnforcerExpressionEvaluator( session, new MockPathTranslator(), new MockProject() ); + assertMatch( ev, "SNAPSHOT" ); + assertMatch( ev, "RELEASE" ); + assertMatch( ev, "SNAPSHOT" ); + assertMatch( ev, "LATEST" ); + assertMatch( ev, "1.0" ); + } + + public void assertMatch( EnforcerExpressionEvaluator ev, String exp ) + { + // the mock enforcer should return the name of the expression as the value. + try + { + assertEquals( exp, ev.evaluate( "${" + exp + "}") ); + } + catch ( ExpressionEvaluationException e ) + { + fail(e.getLocalizedMessage()); + } + } +} Added: maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginPropertyVersion/pom.xml URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginPropertyVersion/pom.xml?rev=604897&view=auto ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginPropertyVersion/pom.xml (added) +++ maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginPropertyVersion/pom.xml Mon Dec 17 07:24:43 2007 @@ -0,0 +1,53 @@ +<project> + <modelVersion>4.0.0</modelVersion> + <artifactId>a</artifactId> + <groupId>group</groupId> + <version>1.0</version> + <properties> + <my.version>2.2-SNAPSHOT</my.version> + <my.release>RELEASE</my.release> + <my.latest>LATEST</my.latest> + <my.snap>SNAPSHOT</my.snap> + </properties> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-install-plugin</artifactId> + <version>${my.latest}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-clean-plugin</artifactId> + <version>${my.release}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <version>${my.version}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0-${my.snap}</version> + <executions> + <execution> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requirePluginVersions> + <additionalPlugins> + <additionalPlugin>org.apache.maven.plugins:maven-enforcer-plugin</additionalPlugin> + + </additionalPlugins> + </requirePluginVersions> + </rules> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> \ No newline at end of file Added: maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginVersionProfile/pom.xml URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginVersionProfile/pom.xml?rev=604897&view=auto ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginVersionProfile/pom.xml (added) +++ maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginVersionProfile/pom.xml Mon Dec 17 07:24:43 2007 @@ -0,0 +1,55 @@ +<project> + <modelVersion>4.0.0</modelVersion> + <artifactId>a</artifactId> + <groupId>group</groupId> + <version>1.0</version> + <properties> + <my.version>2.2-SNAPSHOT</my.version> + <my.release>RELEASE</my.release> + <my.latest>LATEST</my.latest> + <my.snap>SNAPSHOT</my.snap> + </properties> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0-${my.snap}</version> + <executions> + <execution> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requirePluginVersions> + <phases>none</phases> + </requirePluginVersions> + </rules> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <profiles> + <profile> + <id>prof</id> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <version>RELEASE</version> + <executions> + <execution> + <goals><goal>site</goal></goals> + </execution> + <phase>validate</phase> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> \ No newline at end of file