1 package org.apache.maven.plugins.release;
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.Matchers.eq;
23 import static org.mockito.Matchers.isA;
24 import static org.mockito.Matchers.isNull;
25 import static org.mockito.Mockito.doThrow;
26 import static org.mockito.Mockito.mock;
27 import static org.mockito.Mockito.verify;
28 import static org.mockito.Mockito.verifyNoMoreInteractions;
29
30 import java.io.File;
31 import java.util.List;
32 import java.util.Properties;
33
34 import org.apache.maven.execution.MavenSession;
35 import org.apache.maven.plugin.MojoExecutionException;
36 import org.apache.maven.plugin.MojoFailureException;
37 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
38 import org.apache.maven.shared.release.ReleaseExecutionException;
39 import org.apache.maven.shared.release.ReleaseFailureException;
40 import org.apache.maven.shared.release.ReleaseManager;
41 import org.apache.maven.shared.release.config.ReleaseDescriptor;
42 import org.apache.maven.shared.release.env.ReleaseEnvironment;
43
44
45
46
47
48
49 public class PrepareReleaseMojoTest
50 extends AbstractMojoTestCase
51 {
52 private void setDefaults( PrepareReleaseMojo mojo )
53 throws IllegalAccessException
54 {
55 setVariableValueToObject( mojo, "updateWorkingCopyVersions", Boolean.TRUE );
56 }
57
58 @SuppressWarnings( "unchecked" )
59 public void testPrepare()
60 throws Exception
61 {
62 File testFile = getTestFile( "target/test-classes/mojos/prepare/prepare.xml" );
63 PrepareReleaseMojo mojo = (PrepareReleaseMojo) lookupMojo( "prepare", testFile );
64 setDefaults( mojo );
65 mojo.setBasedir( testFile.getParentFile() );
66 mojo.session = new MavenSession( null, null, null, null, null, null, null, null, null )
67 {
68 public Properties getExecutionProperties(){
69 return new Properties();
70 };
71 };
72
73 ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
74 releaseDescriptor.setWorkingDirectory( testFile.getParentFile().getAbsolutePath() );
75 releaseDescriptor.setUpdateDependencies( false );
76
77 ReleaseManager mock = mock( ReleaseManager.class );
78 mojo.setReleaseManager( mock );
79
80
81 mojo.execute();
82
83
84 verify( mock ).prepare( eq( releaseDescriptor ), isA( ReleaseEnvironment.class ), isNull( List.class), eq( true ), eq( false ) );
85 assertTrue( true );
86 }
87
88 @SuppressWarnings( "unchecked" )
89 public void testPrepareWithExecutionException()
90 throws Exception
91 {
92 File testFile = getTestFile( "target/test-classes/mojos/prepare/prepare.xml" );
93 PrepareReleaseMojo mojo = (PrepareReleaseMojo) lookupMojo( "prepare", testFile );
94 setDefaults( mojo );
95 mojo.setBasedir( testFile.getParentFile() );
96 mojo.session = new MavenSession( null, null, null, null, null, null, null, null, null )
97 {
98 public Properties getExecutionProperties(){
99 return new Properties();
100 };
101 };
102 ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
103 releaseDescriptor.setWorkingDirectory( testFile.getParentFile().getAbsolutePath() );
104 releaseDescriptor.setUpdateDependencies( false );
105
106 ReleaseManager mock = mock( ReleaseManager.class );
107 doThrow( new ReleaseExecutionException( "..." ) ).when( mock ).prepare( eq( releaseDescriptor ),
108 isA( ReleaseEnvironment.class ),
109 isNull( List.class),
110 eq( true ),
111 eq( false ) );
112 mojo.setReleaseManager( mock );
113
114
115 try
116 {
117 mojo.execute();
118
119 fail( "Should have thrown an exception" );
120 }
121 catch ( MojoExecutionException e )
122 {
123 assertEquals( "Check cause", ReleaseExecutionException.class, e.getCause().getClass() );
124 }
125
126
127 verify( mock ).prepare( eq( releaseDescriptor ),
128 isA( ReleaseEnvironment.class ),
129 isNull( List.class),
130 eq( true ),
131 eq( false ) );
132 verifyNoMoreInteractions( mock );
133 }
134
135 @SuppressWarnings( "unchecked" )
136 public void testPrepareWithExecutionFailure()
137 throws Exception
138 {
139 File testFile = getTestFile( "target/test-classes/mojos/prepare/prepare.xml" );
140 PrepareReleaseMojo mojo = (PrepareReleaseMojo) lookupMojo( "prepare", testFile );
141 setDefaults( mojo );
142 mojo.setBasedir( testFile.getParentFile() );
143 mojo.session = new MavenSession( null, null, null, null, null, null, null, null, null )
144 {
145 public Properties getExecutionProperties(){
146 return new Properties();
147 };
148 };
149 ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
150 releaseDescriptor.setWorkingDirectory( testFile.getParentFile().getAbsolutePath() );
151 releaseDescriptor.setUpdateDependencies( false );
152
153 ReleaseManager mock = mock( ReleaseManager.class );
154 ReleaseFailureException cause = new ReleaseFailureException( "..." );
155 doThrow( cause ).when( mock ).prepare( eq( releaseDescriptor ),
156 isA( ReleaseEnvironment.class ),
157 isNull( List.class),
158 eq( true ),
159 eq( false ) );
160 mojo.setReleaseManager( mock );
161
162
163 try
164 {
165 mojo.execute();
166
167 fail( "Should have thrown an exception" );
168 }
169 catch ( MojoFailureException e )
170 {
171 assertEquals( "Check cause exists", cause, e.getCause() );
172 }
173
174 verify( mock ).prepare( eq( releaseDescriptor ),
175 isA( ReleaseEnvironment.class ),
176 isNull( List.class),
177 eq( true ),
178 eq( false ) );
179 verifyNoMoreInteractions( mock );
180 }
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263 }