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