You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2008/12/23 03:14:36 UTC

svn commit: r728846 - in /maven/enforcer/trunk: ./ enforcer-rules/ enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/ enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/

Author: brett
Date: Mon Dec 22 18:14:35 2008
New Revision: 728846

URL: http://svn.apache.org/viewvc?rev=728846&view=rev
Log:
[MENFORCER-60] throw an error if beanshell is invalid instead of evaluating to false. Improve tests for beanshell.

Modified:
    maven/enforcer/trunk/enforcer-rules/pom.xml
    maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java
    maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
    maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestEvaluateBeanshell.java
    maven/enforcer/trunk/pom.xml

Modified: maven/enforcer/trunk/enforcer-rules/pom.xml
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/pom.xml?rev=728846&r1=728845&r2=728846&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/pom.xml (original)
+++ maven/enforcer/trunk/enforcer-rules/pom.xml Mon Dec 22 18:14:35 2008
@@ -116,5 +116,9 @@
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
     </dependency>
+    <dependency>
+      <groupId>easymock</groupId>
+      <artifactId>easymock</artifactId>
+    </dependency>
   </dependencies>
 </project>

Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java?rev=728846&r1=728845&r2=728846&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java Mon Dec 22 18:14:35 2008
@@ -27,7 +27,6 @@
 import bsh.EvalError;
 import bsh.Interpreter;
 
-// TODO: Auto-generated Javadoc
 /**
  * Rule for Maven Enforcer using Beanshell to evaluate a conditional expression.
  * 
@@ -70,7 +69,7 @@
         }
         catch ( ExpressionEvaluationException e )
         {
-            throw new EnforcerRuleException( "Unable to evaluate an expression", e );
+            throw new EnforcerRuleException( "Unable to evaluate an expression '" + condition + "'", e );
         }
     }
 
@@ -80,8 +79,10 @@
      * @param script the expression to be evaluated
      * @param log the logger
      * @return boolean the evaluation of the expression
+     * @throws EnforcerRuleException if the script could not be evaluated
      */
     protected boolean evaluateCondition( String script, Log log )
+        throws EnforcerRuleException
     {
         Boolean evaluation = Boolean.FALSE;
         try
@@ -91,7 +92,7 @@
         }
         catch ( EvalError ex )
         {
-            log.warn( "Couldn't evaluate condition: " + script, ex );
+            throw new EnforcerRuleException( "Couldn't evaluate condition: " + script, ex );
         }
         return evaluation.booleanValue();
     }

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=728846&r1=728845&r2=728846&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 22 18:14:35 2008
@@ -35,9 +35,8 @@
  * 
  * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
  */
-public class EnforcerTestUtils
+public final class EnforcerTestUtils
 {
-
     /**
      * Gets the maven session.
      * 
@@ -104,6 +103,19 @@
     }
 
     /**
+     * Gets the helper.
+     * 
+     * @param project the project
+     * @param eval the expression evaluator to use
+     * @return the helper
+     */
+    public static EnforcerRuleHelper getHelper( MavenProject project, ExpressionEvaluator eval )
+    {
+        MavenSession session = getMavenSession();
+        return new DefaultEnforcementRuleHelper( session, eval, new SystemStreamLog(), null );
+    }
+
+    /**
      * New plugin.
      * 
      * @param groupId the group id

Modified: maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestEvaluateBeanshell.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestEvaluateBeanshell.java?rev=728846&r1=728845&r2=728846&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestEvaluateBeanshell.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestEvaluateBeanshell.java Mon Dec 22 18:14:35 2008
@@ -22,8 +22,10 @@
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
+import org.easymock.MockControl;
 
-// TODO: Auto-generated Javadoc
 /**
  * The Class TestEvaluateBeanshell.
  * 
@@ -32,38 +34,111 @@
 public class TestEvaluateBeanshell
     extends TestCase
 {
+    private MockProject project;
+
+    public void setUp()
+    {
+        project = new MockProject();
+        project.setProperty( "env", "\"This is a test.\"" );
+    }
 
     /**
      * Test rule.
-     * 
-     * @throws EnforcerRuleException the enforcer rule exception
      */
-    public void testRule()
-        throws EnforcerRuleException
+    public void testRulePass()
+        throws EnforcerRuleException, ExpressionEvaluationException
     {
-        MockProject project = new MockProject();
-        project.setProperty( "env", "\"This is a test.\"" );
-        EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
-
         EvaluateBeanshell rule = new EvaluateBeanshell();
         // this property should not be set
         rule.condition = "${env} == \"This is a test.\"";
         rule.message = "We have a variable : ${env}";
 
+        EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
         rule.execute( helper );
+    }
+
+    public void testRuleFail()
+        throws EnforcerRuleException, ExpressionEvaluationException
+    {
+        EvaluateBeanshell rule = new EvaluateBeanshell();
+        // this property should be set by the surefire
+        // plugin
+        rule.condition = "${env} == null";
+        rule.message = "We have a variable : ${env}";
+
+        try
+        {
+            EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
+            rule.execute( helper );
+            fail( "Expected an exception." );
+        }
+        catch ( EnforcerRuleException e )
+        {
+            assertEquals( e.getLocalizedMessage(), rule.message );
+        }
+    }
 
+    public void testRuleFailNoMessage()
+        throws EnforcerRuleException, ExpressionEvaluationException
+    {
+        EvaluateBeanshell rule = new EvaluateBeanshell();
         // this property should be set by the surefire
         // plugin
         rule.condition = "${env} == null";
         try
         {
+            EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
             rule.execute( helper );
             fail( "Expected an exception." );
         }
         catch ( EnforcerRuleException e )
         {
-            System.out.println( "Caught expected exception:" + e.getLocalizedMessage() );
+            assertEquals( e.getLocalizedMessage(), rule.message );
+            assertTrue( e.getLocalizedMessage().length() > 0 );
         }
     }
 
+    public void testRuleInvalidExpression()
+        throws EnforcerRuleException, ExpressionEvaluationException
+    {
+        EvaluateBeanshell rule = new EvaluateBeanshell();
+        rule.condition = "${env} == null";
+        rule.message = "We have a variable : ${env}";
+        MockControl evalControl = MockControl.createControl( ExpressionEvaluator.class );
+        try
+        {
+            ExpressionEvaluator eval = (ExpressionEvaluator) evalControl.getMock();
+            eval.evaluate( rule.condition );
+            evalControl.expectAndDefaultThrow( null, new ExpressionEvaluationException( "expected error" ) );
+            evalControl.replay();
+
+            EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project, eval );
+            rule.execute( helper );
+            fail( "Expected an exception." );
+        }
+        catch ( EnforcerRuleException e )
+        {
+            assertFalse( e.getLocalizedMessage().equals( rule.message ) );
+        }
+
+        evalControl.verify();
+    }
+
+    public void testRuleInvalidBeanshell()
+        throws EnforcerRuleException, ExpressionEvaluationException
+    {
+        EvaluateBeanshell rule = new EvaluateBeanshell();
+        rule.condition = "this is not valid beanshell";
+        rule.message = "We have a variable : ${env}";
+        try
+        {
+            EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
+            rule.execute( helper );
+            fail( "Expected an exception." );
+        }
+        catch ( EnforcerRuleException e )
+        {
+            assertFalse( e.getLocalizedMessage().equals( rule.message ) );
+        }
+    }
 }

Modified: maven/enforcer/trunk/pom.xml
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/pom.xml?rev=728846&r1=728845&r2=728846&view=diff
==============================================================================
--- maven/enforcer/trunk/pom.xml (original)
+++ maven/enforcer/trunk/pom.xml Mon Dec 22 18:14:35 2008
@@ -233,6 +233,12 @@
         <scope>test</scope>
       </dependency>
       <dependency>
+        <groupId>easymock</groupId>
+        <artifactId>easymock</artifactId>
+        <version>1.2_Java1.3</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
         <groupId>commons-lang</groupId>
         <artifactId>commons-lang</artifactId>
         <version>2.3</version>