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