1 package org.apache.maven.plugins.enforcer;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import static org.mockito.Mockito.*;
23
24 import junit.framework.TestCase;
25
26 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
27 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
28 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
29 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
30
31
32
33
34
35
36 public class TestEvaluateBeanshell
37 extends TestCase
38 {
39 private MockProject project;
40
41 public void setUp()
42 {
43 project = new MockProject();
44 project.setProperty( "env", "\"This is a test.\"" );
45 }
46
47
48
49
50 public void testRulePass()
51 throws EnforcerRuleException, ExpressionEvaluationException
52 {
53 EvaluateBeanshell rule = new EvaluateBeanshell();
54
55 rule.condition = "${env} == \"This is a test.\"";
56 rule.message = "We have a variable : ${env}";
57
58 EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
59 rule.execute( helper );
60 }
61
62 public void testRuleFail()
63 throws EnforcerRuleException, ExpressionEvaluationException
64 {
65 EvaluateBeanshell rule = new EvaluateBeanshell();
66
67
68 rule.condition = "${env} == null";
69 rule.message = "We have a variable : ${env}";
70
71 try
72 {
73 EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
74 rule.execute( helper );
75 fail( "Expected an exception." );
76 }
77 catch ( EnforcerRuleException e )
78 {
79 assertEquals( e.getLocalizedMessage(), rule.message );
80 }
81 }
82
83 public void testRuleFailNoMessage()
84 throws EnforcerRuleException, ExpressionEvaluationException
85 {
86 EvaluateBeanshell rule = new EvaluateBeanshell();
87
88
89 rule.condition = "${env} == null";
90 try
91 {
92 EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
93 rule.execute( helper );
94 fail( "Expected an exception." );
95 }
96 catch ( EnforcerRuleException e )
97 {
98 assertEquals( e.getLocalizedMessage(), rule.message );
99 assertTrue( e.getLocalizedMessage().length() > 0 );
100 }
101 }
102
103 public void testRuleInvalidExpression()
104 throws EnforcerRuleException, ExpressionEvaluationException
105 {
106 EvaluateBeanshell rule = new EvaluateBeanshell();
107 rule.condition = "${env} == null";
108 rule.message = "We have a variable : ${env}";
109
110 ExpressionEvaluator eval = mock( ExpressionEvaluator.class );
111 when( eval.evaluate( rule.condition ) ).thenThrow( new ExpressionEvaluationException( "expected error" ) );
112 try
113 {
114 EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project, eval );
115 rule.execute( helper );
116 fail( "Expected an exception." );
117 }
118 catch ( EnforcerRuleException e )
119 {
120 assertFalse( e.getLocalizedMessage().equals( rule.message ) );
121 }
122 verify( eval );
123 }
124
125 public void testRuleInvalidBeanshell()
126 throws EnforcerRuleException, ExpressionEvaluationException
127 {
128 EvaluateBeanshell rule = new EvaluateBeanshell();
129 rule.condition = "this is not valid beanshell";
130 rule.message = "We have a variable : ${env}";
131 try
132 {
133 EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
134 rule.execute( helper );
135 fail( "Expected an exception." );
136 }
137 catch ( EnforcerRuleException e )
138 {
139 assertFalse( e.getLocalizedMessage().equals( rule.message ) );
140 }
141 }
142 }