1 package org.apache.maven.shared.release.config;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import junit.framework.TestCase;
23 import org.apache.maven.model.Scm;
24 import org.apache.maven.shared.release.phase.AbstractReleaseTestCase;
25
26 import java.io.File;
27 import java.io.IOException;
28
29
30
31
32
33
34 public class ReleaseUtilsTest
35 extends TestCase
36 {
37 public void testMergeConfigurationSourceEmpty()
38 throws IOException
39 {
40 ReleaseDescriptor mergeDescriptor = createReleaseDescriptor();
41 ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
42 ReleaseDescriptor mergedReleaseDescriptor = ReleaseUtils.merge( releaseDescriptor, mergeDescriptor );
43 ReleaseDescriptor mergedMergeDescriptor = ReleaseUtils.merge( mergeDescriptor, releaseDescriptor );
44
45 assertEquals( "Check merge", mergedReleaseDescriptor, mergedMergeDescriptor );
46 }
47
48 public void testMergeEqualsWithUpdateWorkingCopyTrue()
49 throws IOException
50 {
51 ReleaseDescriptor mergeDescriptor = createReleaseDescriptor();
52 ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
53
54 ReleaseDescriptor mergedReleaseDescriptor = ReleaseUtils.merge( releaseDescriptor, mergeDescriptor );
55 ReleaseDescriptor mergedMergeDescriptor = ReleaseUtils.merge( mergeDescriptor, releaseDescriptor );
56
57 assertEquals( "Check merge", mergedReleaseDescriptor, mergedMergeDescriptor );
58 }
59
60 public void testMergeConfigurationDestEmpty()
61 throws IOException
62 {
63 ReleaseDescriptor releaseDescriptor = createReleaseDescriptor();
64 ReleaseDescriptor mergedReleaseDescriptor = ReleaseUtils.merge( releaseDescriptor, new ReleaseDescriptor() );
65 ReleaseDescriptor expectedDescriptor = copyReleaseDescriptor( mergedReleaseDescriptor );
66
67 assertEquals( "Check merge", expectedDescriptor, releaseDescriptor );
68 }
69
70 public void testMergeConfiguration()
71 throws IOException
72 {
73 File workingDirectory = new File( "." );
74
75 ReleaseDescriptor mergeDescriptor =
76 createMergeDescriptor( AbstractReleaseTestCase.getPath( workingDirectory ), "completed-phase-merge" );
77
78 ReleaseDescriptor releaseDescriptor = createReleaseDescriptor();
79 releaseDescriptor = ReleaseUtils.merge( releaseDescriptor, mergeDescriptor );
80
81 ReleaseDescriptor expected =
82 createMergeDescriptor( releaseDescriptor.getWorkingDirectory(), releaseDescriptor.getCompletedPhase() );
83 assertEquals( "Check merge", expected, releaseDescriptor );
84 }
85
86 public void testEquals()
87 throws IOException
88 {
89 ReleaseDescriptor originalReleaseDescriptor = createReleaseDescriptor();
90 ReleaseDescriptor releaseDescriptor = copyReleaseDescriptor( originalReleaseDescriptor );
91 doEqualsAssertions( releaseDescriptor, originalReleaseDescriptor, "other", new File( "f" ) );
92 originalReleaseDescriptor = createReleaseDescriptor();
93 releaseDescriptor = copyReleaseDescriptor( originalReleaseDescriptor );
94 doEqualsAssertions( originalReleaseDescriptor, releaseDescriptor, "other", new File( "f" ) );
95
96 originalReleaseDescriptor = createReleaseDescriptor();
97 releaseDescriptor = copyReleaseDescriptor( originalReleaseDescriptor );
98 doEqualsAssertions( releaseDescriptor, originalReleaseDescriptor, null, null );
99 originalReleaseDescriptor = createReleaseDescriptor();
100 releaseDescriptor = copyReleaseDescriptor( originalReleaseDescriptor );
101 doEqualsAssertions( originalReleaseDescriptor, releaseDescriptor, null, null );
102
103 assertEquals( "test ==", releaseDescriptor, releaseDescriptor );
104 Object obj = this;
105 assertFalse( "test class instance", releaseDescriptor.equals( obj ) );
106 }
107
108 private static void doEqualsAssertions( ReleaseDescriptor releaseDescriptor,
109 ReleaseDescriptor originalReleaseDescriptor, String other, File otherFile )
110 throws IOException
111 {
112 ReleaseDescriptor origConfig = originalReleaseDescriptor;
113 ReleaseDescriptor config = releaseDescriptor;
114 assertEquals( "Check original comparison", config, origConfig );
115
116 config.setScmSourceUrl( other );
117 assertFalse( "Check original comparison", config.equals( origConfig ) );
118 config.setScmSourceUrl( origConfig.getScmSourceUrl() );
119
120 config.setAdditionalArguments( other );
121 assertFalse( "Check original comparison", config.equals( origConfig ) );
122 config.setAdditionalArguments( origConfig.getAdditionalArguments() );
123
124 config.setAddSchema( !origConfig.isAddSchema() );
125 assertFalse( "Check original comparison", config.equals( origConfig ) );
126 config.setAddSchema( origConfig.isAddSchema() );
127
128 config.setGenerateReleasePoms( !origConfig.isAddSchema() );
129 assertFalse( "Check original comparison", config.equals( origConfig ) );
130 config.setGenerateReleasePoms( origConfig.isGenerateReleasePoms() );
131
132 config.setScmUseEditMode( !origConfig.isScmUseEditMode() );
133 assertFalse( "Check original comparison", config.equals( origConfig ) );
134 config.setScmUseEditMode( origConfig.isScmUseEditMode() );
135
136 config.setInteractive( !origConfig.isInteractive() );
137 assertFalse( "Check original comparison", config.equals( origConfig ) );
138 config.setInteractive( origConfig.isInteractive() );
139
140 config.setCommitByProject( !origConfig.isCommitByProject() );
141 assertFalse( "Check original comparison", config.equals( origConfig ) );
142 config.setCommitByProject( origConfig.isCommitByProject() );
143
144 config.setCompletedPhase( other );
145 assertFalse( "Check original comparison", config.equals( origConfig ) );
146 config.setCompletedPhase( origConfig.getCompletedPhase() );
147
148 config.setScmPrivateKeyPassPhrase( other );
149 assertFalse( "Check original comparison", config.equals( origConfig ) );
150 config.setScmPrivateKeyPassPhrase( origConfig.getScmPrivateKeyPassPhrase() );
151
152 config.setScmPassword( other );
153 assertFalse( "Check original comparison", config.equals( origConfig ) );
154 config.setScmPassword( origConfig.getScmPassword() );
155
156 config.setScmUsername( other );
157 assertFalse( "Check original comparison", config.equals( origConfig ) );
158 config.setScmUsername( origConfig.getScmUsername() );
159
160 config.setScmPrivateKey( other );
161 assertFalse( "Check original comparison", config.equals( origConfig ) );
162 config.setScmPrivateKey( origConfig.getScmPrivateKey() );
163
164 config.setPomFileName( other );
165 assertFalse( "Check original comparison", config.equals( origConfig ) );
166 config.setPomFileName( origConfig.getPomFileName() );
167
168 config.setPreparationGoals( other );
169 assertFalse( "Check original comparison", config.equals( origConfig ) );
170 config.setPreparationGoals( origConfig.getPreparationGoals() );
171
172 config.setScmReleaseLabel( other );
173 assertFalse( "Check original comparison", config.equals( origConfig ) );
174 config.setScmReleaseLabel( origConfig.getScmReleaseLabel() );
175
176 config.setScmTagBase( other );
177 assertFalse( "Check original comparison", config.equals( origConfig ) );
178 config.setScmTagBase( origConfig.getScmTagBase() );
179
180 if ( otherFile != null )
181 {
182 config.setWorkingDirectory( AbstractReleaseTestCase.getPath( otherFile ) );
183 assertFalse( "Check original comparison", config.equals( origConfig ) );
184 }
185
186 config.setWorkingDirectory( origConfig.getWorkingDirectory() );
187
188
189 assertEquals( "Check original comparison", config, origConfig );
190
191 config.mapDevelopmentVersion( "groupId:artifactId", "1.0-SNAPSHOT" );
192 assertFalse( "Check original comparison", config.equals( origConfig ) );
193 config = copyReleaseDescriptor( origConfig );
194
195 config.mapReleaseVersion( "groupId:artifactId", "1.0" );
196 assertFalse( "Check original comparison", config.equals( origConfig ) );
197 config = copyReleaseDescriptor( origConfig );
198
199 config.mapOriginalScmInfo( "groupId:artifactId", new Scm() );
200 assertFalse( "Check original comparison", config.equals( origConfig ) );
201 config = copyReleaseDescriptor( origConfig );
202
203 config.mapOriginalScmInfo( "groupId:artifactId", new Scm() );
204 origConfig.mapOriginalScmInfo( "foo", new Scm() );
205 assertFalse( "Check original comparison", config.equals( origConfig ) );
206 origConfig = createReleaseDescriptor();
207 config = copyReleaseDescriptor( origConfig );
208
209 config.mapOriginalScmInfo( "groupId:artifactId", new Scm() );
210 origConfig.mapOriginalScmInfo( "groupId:artifactId", new Scm() );
211 assertEquals( "Check original comparison", config, origConfig );
212 origConfig = createReleaseDescriptor();
213 config = copyReleaseDescriptor( origConfig );
214
215 config.mapOriginalScmInfo( "groupId:artifactId", getScm( "conn", "dev", "url", "tag" ) );
216 origConfig.mapOriginalScmInfo( "groupId:artifactId", getScm( "conn", "dev", "url", "tag" ) );
217 assertEquals( "Check original comparison", config, origConfig );
218 origConfig = createReleaseDescriptor();
219 config = copyReleaseDescriptor( origConfig );
220
221 config.mapOriginalScmInfo( "groupId:artifactId", getScm( "-", "dev", "url", "tag" ) );
222 origConfig.mapOriginalScmInfo( "groupId:artifactId", getScm( "conn", "dev", "url", "tag" ) );
223 assertFalse( "Check original comparison", config.equals( origConfig ) );
224 origConfig = createReleaseDescriptor();
225 config = copyReleaseDescriptor( origConfig );
226
227 config.mapOriginalScmInfo( "groupId:artifactId", getScm( "conn", "-", "url", "tag" ) );
228 origConfig.mapOriginalScmInfo( "groupId:artifactId", getScm( "conn", "dev", "url", "tag" ) );
229 assertFalse( "Check original comparison", config.equals( origConfig ) );
230 origConfig = createReleaseDescriptor();
231 config = copyReleaseDescriptor( origConfig );
232
233 config.mapOriginalScmInfo( "groupId:artifactId", getScm( "conn", "dev", "-", "tag" ) );
234 origConfig.mapOriginalScmInfo( "groupId:artifactId", getScm( "conn", "dev", "url", "tag" ) );
235 assertFalse( "Check original comparison", config.equals( origConfig ) );
236 origConfig = createReleaseDescriptor();
237 config = copyReleaseDescriptor( origConfig );
238
239 config.mapOriginalScmInfo( "groupId:artifactId", getScm( "conn", "dev", "url", "-" ) );
240 origConfig.mapOriginalScmInfo( "groupId:artifactId", getScm( "conn", "dev", "url", "tag" ) );
241 assertFalse( "Check original comparison", config.equals( origConfig ) );
242 }
243
244 public void testHashCode()
245 throws IOException
246 {
247 ReleaseDescriptor releaseDescriptor = createReleaseDescriptor();
248
249 assertEquals( "Check hash code", releaseDescriptor.hashCode(),
250 createReleaseDescriptor( releaseDescriptor.getWorkingDirectory() ).hashCode() );
251 }
252
253 private static ReleaseDescriptor copyReleaseDescriptor( ReleaseDescriptor originalReleaseDescriptor )
254 {
255 return createReleaseDescriptor( originalReleaseDescriptor.getWorkingDirectory() );
256 }
257
258 private static Scm getScm( String connection, String developerConnection, String url, String tag )
259 {
260 Scm scm = new Scm();
261 scm.setConnection( connection );
262 scm.setDeveloperConnection( developerConnection );
263 scm.setTag( tag );
264 scm.setUrl( url );
265 return scm;
266 }
267
268 private static ReleaseDescriptor createMergeDescriptor( String workingDirectory, String completedPhase )
269 {
270 ReleaseDescriptor mergeDescriptor = new ReleaseDescriptor();
271 mergeDescriptor.setScmSourceUrl( "scm-url-merge" );
272 mergeDescriptor.setCompletedPhase( completedPhase );
273 mergeDescriptor.setScmPrivateKeyPassPhrase( "passphrase-merge" );
274 mergeDescriptor.setScmPassword( "password-merge" );
275 mergeDescriptor.setScmPrivateKey( "private-key-merge" );
276 mergeDescriptor.setScmTagBase( "tag-base-merge" );
277 mergeDescriptor.setScmReleaseLabel( "tag-merge" );
278 mergeDescriptor.setScmUsername( "username-merge" );
279 mergeDescriptor.setAdditionalArguments( "additional-arguments-merge" );
280 mergeDescriptor.setPomFileName( "pom-file-name-merge" );
281 mergeDescriptor.setPreparationGoals( "preparation-goals-merge" );
282 mergeDescriptor.setWorkingDirectory( workingDirectory );
283 return mergeDescriptor;
284 }
285
286 private static ReleaseDescriptor createReleaseDescriptor()
287 throws IOException
288 {
289 File workingDirectory = new File( "." );
290
291 return createReleaseDescriptor(AbstractReleaseTestCase.getPath( workingDirectory ) );
292 }
293
294 private static ReleaseDescriptor createReleaseDescriptor( String workingDirectory )
295 {
296 ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
297 releaseDescriptor.setScmSourceUrl( "scm-url" );
298 releaseDescriptor.setCompletedPhase( "completed-phase" );
299 releaseDescriptor.setScmPrivateKeyPassPhrase( "passphrase" );
300 releaseDescriptor.setScmPassword( "password" );
301 releaseDescriptor.setScmPrivateKey( "private-key" );
302 releaseDescriptor.setScmTagBase( "tag-base" );
303 releaseDescriptor.setScmReleaseLabel( "tag" );
304 releaseDescriptor.setScmUsername( "username" );
305 releaseDescriptor.setWorkingDirectory( workingDirectory );
306 releaseDescriptor.setAdditionalArguments( "additional-arguments" );
307 releaseDescriptor.setPomFileName( "pom-file-name" );
308 releaseDescriptor.setPreparationGoals( "preparation-goals" );
309
310 return releaseDescriptor;
311 }
312 }