1 package org.apache.maven.plugin.assembly.utils;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.execution.MavenSession;
23 import org.apache.maven.model.Build;
24 import org.apache.maven.model.Model;
25 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
26 import org.apache.maven.plugin.assembly.archive.task.testutils.ArtifactMock;
27 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
28 import org.apache.maven.plugin.assembly.model.Assembly;
29 import org.apache.maven.plugin.assembly.testutils.MockManager;
30 import org.apache.maven.project.MavenProject;
31 import org.easymock.MockControl;
32 import org.easymock.classextension.MockClassControl;
33
34 import java.util.Properties;
35
36 import junit.framework.TestCase;
37
38 public class AssemblyFormatUtilsTest
39 extends TestCase
40 {
41
42 private final MockManager mockManager = new MockManager();
43
44 public void testFixRelativePathRefs_ShouldRemoveRelativeRefToCurrentDir()
45 throws AssemblyFormattingException
46 {
47 assertEquals( "path/", AssemblyFormatUtils.fixRelativeRefs( "./path/" ) );
48 }
49
50 public void testFixRelativePathRefs_ShouldRemoveEmbeddedSameDirRef()
51 throws AssemblyFormattingException
52 {
53 assertEquals( "some/path/", AssemblyFormatUtils.fixRelativeRefs( "some/./path/" ) );
54 }
55
56 public void testFixRelativePathRefs_ShouldRemoveEmbeddedParentDirRef()
57 throws AssemblyFormattingException
58 {
59 assertEquals( "path/", AssemblyFormatUtils.fixRelativeRefs( "some/../path/" ) );
60 }
61
62 public void testFixRelativePathRefs_ShouldTruncateRelativeRefToParentDir()
63 throws AssemblyFormattingException
64 {
65 assertEquals( "path/", AssemblyFormatUtils.fixRelativeRefs( "../path/" ) );
66 }
67
68 public void testGetDistroName_ShouldUseJustFinalNameWithNoAppendAssemblyIdOrClassifier()
69 {
70 verifyDistroName( "assembly", null, "finalName", false, "finalName" );
71 }
72
73 public void testGetDistroName_ShouldUseFinalNamePlusClassifierWhenAppendAssemblyIdIsNull()
74 {
75 verifyDistroName( "assembly", "classifier", "finalName", false, "finalName-classifier" );
76 }
77
78 public void testGetOutputDir_ShouldResolveGroupIdInOutDir_UseArtifactInfo()
79 throws AssemblyFormattingException
80 {
81 verifyOutputDirUsingArtifactProject( "${artifact.groupId}", null, "group", null, null, null, null, "group/" );
82 }
83
84 public void testGetOutputDir_ShouldResolveArtifactIdInOutDir_UseArtifactInfo()
85 throws AssemblyFormattingException
86 {
87 verifyOutputDirUsingArtifactProject( "${artifact.artifactId}", null, null, "artifact", null, null, null,
88 "artifact/" );
89 }
90
91 public void testGetOutputDir_ShouldResolveVersionInOutDir_UseArtifactInfo()
92 throws AssemblyFormattingException
93 {
94 verifyOutputDirUsingArtifactProject( "${artifact.version}", null, null, null, "version", null, null, "version/" );
95 }
96
97 public void testGetOutputDir_ShouldResolveBuildFinalNameInOutDir_UseArtifactInfo()
98 throws AssemblyFormattingException
99 {
100 verifyOutputDirUsingArtifactProject( "${artifact.build.finalName}", null, null, null, null, "finalName", null,
101 "finalName/" );
102 }
103
104 public void testGetOutputDir_ShouldResolveGroupIdInOutDir_UseModuleInfo()
105 throws AssemblyFormattingException
106 {
107 verifyOutputDirUsingModuleProject( "${module.groupId}", null, "group", null, null, null, null, "group/" );
108 }
109
110 public void testGetOutputDir_ShouldResolveArtifactIdInOutDir_UseModuleInfo()
111 throws AssemblyFormattingException
112 {
113 verifyOutputDirUsingModuleProject( "${module.artifactId}", null, null, "artifact", null, null, null,
114 "artifact/" );
115 }
116
117 public void testGetOutputDir_ShouldResolveVersionInOutDir_UseModuleInfo()
118 throws AssemblyFormattingException
119 {
120 verifyOutputDirUsingModuleProject( "${module.version}", null, null, null, "version", null, null, "version/" );
121 }
122
123 public void testGetOutputDir_ShouldResolveBuildFinalNameInOutDir_UseModuleInfo()
124 throws AssemblyFormattingException
125 {
126 verifyOutputDirUsingModuleProject( "${module.build.finalName}", null, null, null, null, "finalName", null,
127 "finalName/" );
128 }
129
130 public void testGetOutputDir_ShouldResolveGroupIdInOutDir_UseExplicitMainProject()
131 throws AssemblyFormattingException
132 {
133 verifyOutputDirUsingMainProject( "${pom.groupId}", null, "group", null, null, null, null, "group/" );
134 }
135
136 public void testGetOutputDir_ShouldResolveArtifactIdInOutDir_UseExplicitMainProject()
137 throws AssemblyFormattingException
138 {
139 verifyOutputDirUsingMainProject( "${pom.artifactId}", null, null, "artifact", null, null, null, "artifact/" );
140 }
141
142 public void testGetOutputDir_ShouldResolveVersionInOutDir_UseExplicitMainProject()
143 throws AssemblyFormattingException
144 {
145 verifyOutputDirUsingMainProject( "${pom.version}", null, null, null, "version", null, null, "version/" );
146 }
147
148 public void testGetOutputDir_ShouldResolveBuildFinalNameInOutDir_UseExplicitMainProject()
149 throws AssemblyFormattingException
150 {
151 verifyOutputDirUsingMainProject( "${pom.build.finalName}", null, null, null, null, "finalName", null,
152 "finalName/" );
153 }
154
155 public void testGetOutputDir_ShouldResolveGroupIdInOutDir_UseExplicitMainProject_projectRef()
156 throws AssemblyFormattingException
157 {
158 verifyOutputDirUsingMainProject( "${project.groupId}", null, "group", null, null, null, null, "group/" );
159 }
160
161 public void testGetOutputDir_ShouldResolveArtifactIdInOutDir_UseExplicitMainProject_projectRef()
162 throws AssemblyFormattingException
163 {
164 verifyOutputDirUsingMainProject( "${project.artifactId}", null, null, "artifact", null, null, null, "artifact/" );
165 }
166
167 public void testGetOutputDir_ShouldResolveVersionInOutDir_UseExplicitMainProject_projectRef()
168 throws AssemblyFormattingException
169 {
170 verifyOutputDirUsingMainProject( "${project.version}", null, null, null, "version", null, null, "version/" );
171 }
172
173 public void testGetOutputDir_ShouldResolveBuildFinalNameInOutDir_UseExplicitMainProject_projectRef()
174 throws AssemblyFormattingException
175 {
176 verifyOutputDir( "${project.build.finalName}", null, "finalName", "finalName/" );
177 }
178
179 public void testGetOutputDir_ShouldNotAlterOutDirWhenIncludeBaseFalseAndNoExpressions()
180 throws AssemblyFormattingException
181 {
182 verifyOutputDir( "dir/", "finalName", null, "dir/" );
183 }
184
185 public void testGetOutputDir_ShouldNotAlterOutDirWhenIncludeBaseFalseAndNoExpressions_CheckWithBackslash()
186 throws AssemblyFormattingException
187 {
188 verifyOutputDir( "dir\\", "finalName", null, "dir\\" );
189 }
190
191 public void testGetOutputDir_ShouldAppendSlashToOutDirWhenMissingAndIncludeBaseFalseAndNoExpressions()
192 throws AssemblyFormattingException
193 {
194 verifyOutputDir( "dir", "finalName", null, "dir/" );
195 }
196
197 public void testGetOutputDir_ShouldResolveGroupIdInOutDir()
198 throws AssemblyFormattingException
199 {
200 verifyOutputDirUsingMainProject( "${groupId}", "finalName", "group", null, null, null, null, "group/" );
201 }
202
203 public void testGetOutputDir_ShouldResolveArtifactIdInOutDir()
204 throws AssemblyFormattingException
205 {
206 verifyOutputDirUsingMainProject( "${artifactId}", "finalName", null, "artifact", null, null, null, "artifact/" );
207 }
208
209 public void testGetOutputDir_ShouldResolveVersionInOutDir()
210 throws AssemblyFormattingException
211 {
212 verifyOutputDirUsingMainProject( "${version}", "finalName", null, null, "version", null, null, "version/" );
213 }
214
215 public void testGetOutputDir_ShouldResolveVersionInLargerOutDirExpr()
216 throws AssemblyFormattingException
217 {
218 verifyOutputDirUsingMainProject( "my-special-${version}", "finalName", null, null, "99", null, null,
219 "my-special-99/" );
220 }
221
222 public void testGetOutputDir_ShouldResolveFinalNameInOutDir()
223 throws AssemblyFormattingException
224 {
225 verifyOutputDir( "${finalName}", "finalName", null, "finalName/" );
226 }
227
228 public void testGetOutputDir_ShouldResolveBuildFinalNameInOutDir()
229 throws AssemblyFormattingException
230 {
231 verifyOutputDir( "${build.finalName}", "finalName", null, "finalName/" );
232 }
233
234 public void testGetOutputDir_ShouldReturnEmptyPathWhenAllInputIsEmptyAndIncludeBaseFalse()
235 throws AssemblyFormattingException
236 {
237 verifyOutputDir( null, null, null, "" );
238 }
239
240 public void testGetOutputDir_ShouldRemoveRelativeRefToCurrentDir()
241 throws AssemblyFormattingException
242 {
243 verifyOutputDir( "./path/", null, null, "path/" );
244 }
245
246 public void testGetOutputDir_ShouldRemoveEmbeddedSameDirRef()
247 throws AssemblyFormattingException
248 {
249 verifyOutputDir( "some/./path/", null, null, "some/path/" );
250 }
251
252 public void testGetOutputDir_ShouldRemoveEmbeddedParentDirRef()
253 throws AssemblyFormattingException
254 {
255 verifyOutputDir( "some/../path/", null, null, "path/" );
256 }
257
258 public void testGetOutputDir_ShouldTruncateRelativeRefToParentDir()
259 throws AssemblyFormattingException
260 {
261 verifyOutputDir( "../path/", null, null, "path/" );
262 }
263
264 public void testGetOutputDir_ShouldResolveProjectProperty()
265 throws AssemblyFormattingException
266 {
267 final Properties props = new Properties();
268 props.setProperty( "myProperty", "value" );
269
270 verifyOutputDirUsingMainProject( "file.${myProperty}", null, null, null, null, null, props, "file.value/" );
271 }
272
273 public void testGetOutputDir_ShouldResolveProjectPropertyAltExpr()
274 throws AssemblyFormattingException
275 {
276 final Properties props = new Properties();
277 props.setProperty( "myProperty", "value" );
278
279 verifyOutputDirUsingMainProject( "file.${pom.properties.myProperty}", null, null, null, null, null, props,
280 "file.value/" );
281 }
282
283 public void testEvalFileNameMapping_ShouldResolveArtifactIdAndBaseVersionInOutDir_UseArtifactInfo_WithValidMainProject()
284 throws AssemblyFormattingException
285 {
286 final MavenProject mainProject = createProject( "group", "main", "1", null );
287
288 final String artifactVersion = "2-20070807.112233-1";
289 final String artifactBaseVersion = "2-SNAPSHOT";
290 final MavenProject artifactProject = createProject( "group", "artifact", artifactVersion, null );
291 final ArtifactMock artifactMock =
292 new ArtifactMock( mockManager, "group", "artifact", artifactVersion, "jar", true, artifactBaseVersion );
293
294 artifactProject.setArtifact( artifactMock.getArtifact() );
295
296 final MockControl sessionCtl = MockClassControl.createControl( MavenSession.class );
297 mockManager.add( sessionCtl );
298
299 final MavenSession session = (MavenSession) sessionCtl.getMock();
300 session.getExecutionProperties();
301 sessionCtl.setReturnValue( null, MockControl.ZERO_OR_MORE );
302
303 session.getUserProperties();
304 sessionCtl.setReturnValue( new Properties(), MockControl.ZERO_OR_MORE );
305
306 final MockControl csCtl = MockControl.createControl( AssemblerConfigurationSource.class );
307 mockManager.add( csCtl );
308
309 final AssemblerConfigurationSource cs = (AssemblerConfigurationSource) csCtl.getMock();
310 cs.getMavenSession();
311 csCtl.setReturnValue( session, MockControl.ZERO_OR_MORE );
312
313 mockManager.replayAll();
314
315 final String result =
316 AssemblyFormatUtils.evaluateFileNameMapping( "${artifact.artifactId}-${artifact.baseVersion}",
317 artifactMock.getArtifact(), mainProject, artifactProject, cs );
318
319 assertEquals( "artifact-2-SNAPSHOT", result );
320
321 mockManager.verifyAll();
322
323
324 mockManager.clear();
325 }
326
327 public void testEvalFileNameMapping_ShouldResolveGroupIdInOutDir_UseArtifactInfo()
328 throws AssemblyFormattingException
329 {
330 verifyEvalFileNameMappingUsingArtifactProject( "${artifact.groupId}", null, "group", null, null, null, "group",
331 null );
332 }
333
334 public void testEvalFileNameMapping_ShouldResolveArtifactIdInOutDir_UseArtifactInfo()
335 throws AssemblyFormattingException
336 {
337 verifyEvalFileNameMappingUsingArtifactProject( "${artifact.artifactId}", null, null, "artifact", null, null,
338 "artifact", null );
339 }
340
341 public void testEvalFileNameMapping_ShouldResolveVersionInOutDir_UseArtifactInfo()
342 throws AssemblyFormattingException
343 {
344 verifyEvalFileNameMappingUsingArtifactProject( "${artifact.version}", null, null, null, "version", null,
345 "version", null );
346 }
347
348 public void testEvalFileNameMapping_ShouldResolveGroupIdInOutDir_UseArtifactInfoAndModulePrefix()
349 throws AssemblyFormattingException
350 {
351 verifyEvalFileNameMappingUsingModuleProject( "${module.groupId}", null, "group", null, null, null, "group",
352 null );
353 }
354
355 public void testEvalFileNameMapping_ShouldResolveArtifactIdInOutDir_UseArtifactInfoAndModulePrefix()
356 throws AssemblyFormattingException
357 {
358 verifyEvalFileNameMappingUsingModuleProject( "${module.artifactId}", null, null, "artifact", null, null,
359 "artifact", null );
360 }
361
362 public void testEvalFileNameMapping_ShouldResolveVersionInOutDir_UseArtifactInfoAndModulePrefix()
363 throws AssemblyFormattingException
364 {
365 verifyEvalFileNameMappingUsingModuleProject( "${module.version}", null, null, null, "version", null, "version",
366 null );
367 }
368
369 public void testEvalFileNameMapping_ShouldResolveGroupIdInOutDir_UseExplicitMainProject()
370 throws AssemblyFormattingException
371 {
372 verifyEvalFileNameMappingUsingMainProject( "${pom.groupId}", null, "group", null, null, null, "group", null );
373 }
374
375 public void testEvalFileNameMapping_ShouldResolveArtifactIdInOutDir_UseExplicitMainProject()
376 throws AssemblyFormattingException
377 {
378 verifyEvalFileNameMappingUsingMainProject( "${pom.artifactId}", null, null, "artifact", null, null, "artifact",
379 null );
380 }
381
382 public void testEvalFileNameMapping_ShouldResolveVersionInOutDir_UseExplicitMainProject()
383 throws AssemblyFormattingException
384 {
385 verifyEvalFileNameMappingUsingMainProject( "${pom.version}", null, null, null, "version", null, "version", null );
386 }
387
388 public void testEvalFileNameMapping_ShouldResolveGroupIdInOutDir_UseExplicitMainProject_projectRef()
389 throws AssemblyFormattingException
390 {
391 verifyEvalFileNameMappingUsingMainProject( "${project.groupId}", null, "group", null, null, null, "group", null );
392 }
393
394 public void testEvalFileNameMapping_ShouldResolveArtifactIdInOutDir_UseExplicitMainProject_projectRef()
395 throws AssemblyFormattingException
396 {
397 verifyEvalFileNameMappingUsingMainProject( "${project.artifactId}", null, null, "artifact", null, null,
398 "artifact", null );
399 }
400
401 public void testEvalFileNameMapping_ShouldResolveVersionInOutDir_UseExplicitMainProject_projectRef()
402 throws AssemblyFormattingException
403 {
404 verifyEvalFileNameMappingUsingMainProject( "${project.version}", null, null, null, "version", null, "version",
405 null );
406 }
407
408 public void testEvalFileNameMapping_ShouldRemoveRelativeRefToCurrentDir()
409 throws AssemblyFormattingException
410 {
411 verifyEvalFileNameMappingUsingMainProject( "./path/", null, null, null, null, null, "path/",
412 null );
413 }
414
415 public void testEvalFileNameMapping_ShouldRemoveEmbeddedSameDirRef()
416 throws AssemblyFormattingException
417 {
418 verifyEvalFileNameMappingUsingMainProject( "some/./path/", null, null, null, null, null, "some/path/",
419 null );
420 }
421
422 public void testEvalFileNameMapping_ShouldRemoveEmbeddedParentDirRef()
423 throws AssemblyFormattingException
424 {
425 verifyEvalFileNameMappingUsingMainProject( "some/../path/", null, null, null, null, null, "path/",
426 null );
427 }
428
429 public void testEvalFileNameMapping_ShouldTruncateRelativeRefToParentDir()
430 throws AssemblyFormattingException
431 {
432 verifyEvalFileNameMappingUsingMainProject( "../path/", null, null, null, null, null, "path/",
433 null );
434 }
435
436 public void testEvalFileNameMapping_ShouldPassExpressionThroughUnchanged()
437 throws AssemblyFormattingException
438 {
439 verifyEvalFileNameMapping( "filename", null, null, "filename", null );
440 }
441
442 public void testEvalFileNameMapping_ShouldInsertClassifierAheadOfExtension()
443 throws AssemblyFormattingException
444 {
445 verifyEvalFileNameMapping( "filename-${artifact.classifier}.ext", "classifier", null,
446 "filename-classifier.ext", null );
447 }
448
449 public void testEvalFileNameMapping_ShouldAppendDashClassifierWhenClassifierPresent()
450 throws AssemblyFormattingException
451 {
452 verifyEvalFileNameMapping( "filename${dashClassifier?}", "classifier", null, "filename-classifier", null );
453 }
454
455 public void testEvalFileNameMapping_ShouldNotAppendDashClassifierWhenClassifierMissing()
456 throws AssemblyFormattingException
457 {
458 verifyEvalFileNameMapping( "filename${dashClassifier?}", null, null, "filename", null );
459 }
460
461 public void testEvalFileNameMapping_ShouldNotAppendDashClassifierWhenClassifierEmpty()
462 throws AssemblyFormattingException
463 {
464 verifyEvalFileNameMapping( "filename${dashClassifier?}", "", null, "filename", null );
465 }
466
467 public void testEvalFileNameMapping_ShouldResolveGroupId()
468 throws AssemblyFormattingException
469 {
470 verifyEvalFileNameMappingUsingMainProject( "${groupId}", null, "group", null, null, null, "group", null );
471 }
472
473 public void testEvalFileNameMapping_ShouldResolveArtifactId()
474 throws AssemblyFormattingException
475 {
476 verifyEvalFileNameMappingUsingMainProject( "${artifactId}", null, null, "artifact", null, null, "artifact",
477 null );
478 }
479
480 public void testEvalFileNameMapping_ShouldResolveVersion()
481 throws AssemblyFormattingException
482 {
483 verifyEvalFileNameMappingUsingMainProject( "${version}", null, null, null, "version", null, "version", null );
484 }
485
486 public void testEvalFileNameMapping_ShouldResolveExtension()
487 throws AssemblyFormattingException
488 {
489 verifyEvalFileNameMapping( "file.${artifact.extension}", null, "ext", "file.ext", null );
490 }
491
492 public void testEvalFileNameMapping_ShouldResolveProjectProperty()
493 throws AssemblyFormattingException
494 {
495 final Properties props = new Properties();
496 props.setProperty( "myProperty", "value" );
497
498 verifyEvalFileNameMapping( "file.${myProperty}", null, null, "file.value", props );
499 }
500
501 public void testEvalFileNameMapping_ShouldResolveProjectPropertyAltExpr()
502 throws AssemblyFormattingException
503 {
504 final Properties props = new Properties();
505 props.setProperty( "myProperty", "value" );
506
507 verifyEvalFileNameMapping( "file.${pom.properties.myProperty}", null, null, "file.value", props );
508 }
509
510 public void testEvalFileNameMapping_ShouldResolveSystemPropertyWithoutMainProjectPresent()
511 throws AssemblyFormattingException
512 {
513 verifyEvalFileNameMapping( "file.${java.version}", null, null, "file." + System.getProperty( "java.version" ),
514 null );
515 }
516
517 private void verifyEvalFileNameMapping( final String expression, final String classifier, final String extension,
518 final String checkValue, final Properties projectProperties )
519 throws AssemblyFormattingException
520 {
521 verifyEvalFileNameMappingUsingMainProject( expression, classifier, null, null, null, extension, checkValue,
522 projectProperties );
523 }
524
525 private void verifyEvalFileNameMappingUsingMainProject( final String expression, final String classifier,
526 final String groupId, final String artifactId,
527 final String version, final String extension,
528 final String checkValue, final Properties projectProperties )
529 throws AssemblyFormattingException
530 {
531 final MavenProject mainProject = createProject( groupId, artifactId, version, projectProperties );
532
533 final MavenProject artifactProject = createProject( "unknown", "unknown", "unknown", null );
534 final MavenProject moduleProject = createProject( "unknown", "unknown", "unknown", null );
535
536 verifyEvalFileNameMapping( expression, classifier, extension, mainProject, moduleProject, artifactProject,
537 checkValue );
538 }
539
540 private void verifyEvalFileNameMappingUsingArtifactProject( final String expression, final String classifier,
541 final String groupId, final String artifactId,
542 final String version, final String extension,
543 final String checkValue,
544 final Properties projectProperties )
545 throws AssemblyFormattingException
546 {
547 final MavenProject artifactProject = createProject( groupId, artifactId, version, projectProperties );
548
549 final MavenProject mainProject = createProject( "unknown", "unknown", "unknown", null );
550 final MavenProject moduleProject = createProject( "unknown", "unknown", "unknown", null );
551
552 verifyEvalFileNameMapping( expression, classifier, extension, mainProject, moduleProject, artifactProject,
553 checkValue );
554 }
555
556 private void verifyEvalFileNameMappingUsingModuleProject( final String expression, final String classifier,
557 final String groupId, final String artifactId,
558 final String version, final String extension,
559 final String checkValue,
560 final Properties projectProperties )
561 throws AssemblyFormattingException
562 {
563 final MavenProject moduleProject = createProject( groupId, artifactId, version, projectProperties );
564
565 final MavenProject mainProject = createProject( "unknown", "unknown", "unknown", null );
566 final MavenProject artifactProject = createProject( "unknown", "unknown", "unknown", null );
567
568 verifyEvalFileNameMapping( expression, classifier, extension, mainProject, moduleProject, artifactProject,
569 checkValue );
570 }
571
572 private MavenProject createProject( String groupId, String artifactId, String version,
573 final Properties projectProperties )
574 {
575 if ( artifactId == null )
576 {
577 artifactId = "artifact";
578 }
579
580 if ( groupId == null )
581 {
582 groupId = "group";
583 }
584
585 if ( version == null )
586 {
587 version = "version";
588 }
589
590 final Model model = new Model();
591 model.setGroupId( groupId );
592 model.setArtifactId( artifactId );
593 model.setVersion( version );
594
595 model.setProperties( projectProperties );
596
597 return new MavenProject( model );
598 }
599
600 private void verifyEvalFileNameMapping( final String expression, final String classifier, final String extension,
601 final MavenProject mainProject, final MavenProject moduleProject,
602 final MavenProject artifactProject, final String checkValue )
603 throws AssemblyFormattingException
604 {
605 final ArtifactMock artifactMock =
606 new ArtifactMock( mockManager, artifactProject.getGroupId(), artifactProject.getArtifactId(),
607 artifactProject.getVersion(), extension, classifier, false, null );
608
609 final ArtifactMock moduleArtifactMock =
610 new ArtifactMock( mockManager, moduleProject.getGroupId(), moduleProject.getArtifactId(),
611 moduleProject.getVersion(), "jar", false, null );
612
613 final MockControl sessionCtl = MockClassControl.createControl( MavenSession.class );
614 mockManager.add( sessionCtl );
615
616 final MavenSession session = (MavenSession) sessionCtl.getMock();
617 session.getExecutionProperties();
618 sessionCtl.setReturnValue( System.getProperties(), MockControl.ZERO_OR_MORE );
619
620 session.getUserProperties();
621 sessionCtl.setReturnValue( new Properties(), MockControl.ZERO_OR_MORE );
622
623 final MockControl csCtl = MockControl.createControl( AssemblerConfigurationSource.class );
624 mockManager.add( csCtl );
625
626 final AssemblerConfigurationSource cs = (AssemblerConfigurationSource) csCtl.getMock();
627 cs.getMavenSession();
628 csCtl.setReturnValue( session, MockControl.ZERO_OR_MORE );
629
630 mockManager.replayAll();
631
632 final String result =
633 AssemblyFormatUtils.evaluateFileNameMapping( expression, artifactMock.getArtifact(), mainProject,
634 moduleProject, moduleArtifactMock.getArtifact(),
635 artifactProject, cs );
636
637 assertEquals( checkValue, result );
638
639 mockManager.verifyAll();
640
641
642 mockManager.clear();
643 }
644
645 private void verifyOutputDir( final String outDir, final String finalName, final String projectFinalName,
646 final String checkValue )
647 throws AssemblyFormattingException
648 {
649 verifyOutputDirUsingMainProject( outDir, finalName, null, null, null, projectFinalName, null, checkValue );
650 }
651
652 private void verifyOutputDirUsingMainProject( final String outDir, final String finalName, final String groupId,
653 final String artifactId, final String version,
654 final String projectFinalName, final Properties properties,
655 final String checkValue )
656 throws AssemblyFormattingException
657 {
658 final MavenProject project = createProject( groupId, artifactId, version, properties );
659
660 if ( projectFinalName != null )
661 {
662 final Build build = new Build();
663 build.setFinalName( projectFinalName );
664
665 project.getModel().setBuild( build );
666 }
667
668 final MavenProject mainProject = project;
669 final MavenProject moduleProject = createProject( "unknown", "unknown", "unknown", null );
670 final MavenProject artifactProject = createProject( "unknown", "unknown", "unknown", null );
671
672 verifyOutputDir( outDir, finalName, mainProject, moduleProject, artifactProject, checkValue );
673 }
674
675 private void verifyOutputDirUsingModuleProject( final String outDir, final String finalName, final String groupId,
676 final String artifactId, final String version,
677 final String projectFinalName, final Properties properties,
678 final String checkValue )
679 throws AssemblyFormattingException
680 {
681 final MavenProject project = createProject( groupId, artifactId, version, properties );
682
683 if ( projectFinalName != null )
684 {
685 final Build build = new Build();
686 build.setFinalName( projectFinalName );
687
688 project.getModel().setBuild( build );
689 }
690
691 final MavenProject moduleProject = project;
692 final MavenProject mainProject = createProject( "unknown", "unknown", "unknown", null );
693 final MavenProject artifactProject = createProject( "unknown", "unknown", "unknown", null );
694
695 verifyOutputDir( outDir, finalName, mainProject, moduleProject, artifactProject, checkValue );
696 }
697
698 private void verifyOutputDirUsingArtifactProject( final String outDir, final String finalName,
699 final String groupId, final String artifactId,
700 final String version, final String projectFinalName,
701 final Properties properties, final String checkValue )
702 throws AssemblyFormattingException
703 {
704 final MavenProject project = createProject( groupId, artifactId, version, properties );
705
706 if ( projectFinalName != null )
707 {
708 final Build build = new Build();
709 build.setFinalName( projectFinalName );
710
711 project.getModel().setBuild( build );
712 }
713
714 final MavenProject artifactProject = project;
715 final MavenProject moduleProject = createProject( "unknown", "unknown", "unknown", null );
716 final MavenProject mainProject = createProject( "unknown", "unknown", "unknown", null );
717
718 verifyOutputDir( outDir, finalName, mainProject, moduleProject, artifactProject, checkValue );
719 }
720
721 private void verifyOutputDir( final String outDir, final String finalName, final MavenProject mainProject,
722 final MavenProject moduleProject, final MavenProject artifactProject,
723 final String checkValue )
724 throws AssemblyFormattingException
725 {
726 final MockControl sessionCtl = MockClassControl.createControl( MavenSession.class );
727 mockManager.add( sessionCtl );
728
729 final MavenSession session = (MavenSession) sessionCtl.getMock();
730 session.getExecutionProperties();
731 sessionCtl.setReturnValue( System.getProperties(), MockControl.ZERO_OR_MORE );
732
733 session.getUserProperties();
734 sessionCtl.setReturnValue( new Properties(), MockControl.ZERO_OR_MORE );
735
736 final MockControl csCtl = MockControl.createControl( AssemblerConfigurationSource.class );
737 mockManager.add( csCtl );
738
739 final AssemblerConfigurationSource cs = (AssemblerConfigurationSource) csCtl.getMock();
740 cs.getMavenSession();
741 csCtl.setReturnValue( session, MockControl.ZERO_OR_MORE );
742
743 String result;
744
745 mockManager.replayAll();
746 result =
747 AssemblyFormatUtils.getOutputDirectory( outDir, mainProject, moduleProject, artifactProject, finalName, cs );
748
749 assertEquals( checkValue, result );
750
751 mockManager.verifyAll();
752
753 mockManager.clear();
754 }
755
756 private void verifyDistroName( final String assemblyId, final String classifier, final String finalName,
757 final boolean appendAssemblyId, final String checkValue )
758 {
759 final MockAndControlForGetDistroName mac =
760 new MockAndControlForGetDistroName( finalName, appendAssemblyId, classifier );
761
762 mockManager.replayAll();
763
764 final Assembly assembly = new Assembly();
765 assembly.setId( assemblyId );
766
767 final String result = AssemblyFormatUtils.getDistributionName( assembly, mac.configSource );
768
769 assertEquals( checkValue, result );
770
771 mockManager.verifyAll();
772
773
774 mockManager.clear();
775 }
776
777 private final class MockAndControlForGetDistroName
778 {
779 MockControl control;
780
781 AssemblerConfigurationSource configSource;
782
783 private final String classifier;
784
785 private final boolean isAssemblyIdAppended;
786
787 private final String finalName;
788
789 public MockAndControlForGetDistroName( final String finalName, final boolean isAssemblyIdAppended,
790 final String classifier )
791 {
792 this.finalName = finalName;
793 this.isAssemblyIdAppended = isAssemblyIdAppended;
794 this.classifier = classifier;
795
796 control = MockControl.createControl( AssemblerConfigurationSource.class );
797 mockManager.add( control );
798
799 configSource = (AssemblerConfigurationSource) control.getMock();
800
801 enableExpectations();
802 }
803
804 private void enableExpectations()
805 {
806 configSource.getClassifier();
807 control.setReturnValue( classifier, MockControl.ONE_OR_MORE );
808
809 configSource.isAssemblyIdAppended();
810 control.setReturnValue( isAssemblyIdAppended, MockControl.ONE_OR_MORE );
811
812 configSource.getFinalName();
813 control.setReturnValue( finalName, MockControl.ONE_OR_MORE );
814 }
815
816 }
817
818 }