1 package org.apache.maven.project;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.util.ArrayList;
24 import java.util.Arrays;
25 import java.util.List;
26 import java.util.Map;
27 import java.util.Properties;
28
29 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
30 import org.apache.maven.model.Plugin;
31 import org.apache.maven.model.PluginExecution;
32 import org.apache.maven.model.building.ModelBuildingRequest;
33 import org.apache.maven.project.harness.PomTestWrapper;
34 import org.apache.maven.repository.RepositorySystem;
35 import org.apache.maven.repository.internal.MavenRepositorySystemSession;
36 import org.codehaus.plexus.PlexusTestCase;
37 import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
38
39 public class PomConstructionTest
40 extends PlexusTestCase
41 {
42 private static String BASE_DIR = "src/test";
43
44 private static String BASE_POM_DIR = BASE_DIR + "/resources-project-builder";
45
46 private static String BASE_MIXIN_DIR = BASE_DIR + "/resources-mixins";
47
48 private DefaultProjectBuilder projectBuilder;
49
50 private RepositorySystem repositorySystem;
51
52 private File testDirectory;
53
54 protected void setUp()
55 throws Exception
56 {
57 testDirectory = new File( getBasedir(), BASE_POM_DIR );
58 new File( getBasedir(), BASE_MIXIN_DIR );
59 projectBuilder = (DefaultProjectBuilder) lookup( ProjectBuilder.class );
60 repositorySystem = lookup( RepositorySystem.class );
61 }
62
63 @Override
64 protected void tearDown()
65 throws Exception
66 {
67 projectBuilder = null;
68
69 super.tearDown();
70 }
71
72
73
74
75
76
77
78 public void testEmptyUrl()
79 throws Exception
80 {
81 buildPom( "empty-distMng-repo-url" );
82 }
83
84
85
86
87
88
89
90 public void testProfileModules()
91 throws Exception
92 {
93 PomTestWrapper pom = buildPom( "profile-module", "a" );
94 assertEquals( "test-prop", pom.getValue( "properties[1]/b" ) );
95 assertEquals( 4, ( (List<?>) pom.getValue( "modules" ) ).size() );
96 assertEquals( "module-2", pom.getValue( "modules[1]" ) );
97 assertEquals( "module-1", pom.getValue( "modules[2]" ) );
98 assertEquals( "module-3", pom.getValue( "modules[3]" ) );
99 assertEquals( "module-4", pom.getValue( "modules[4]" ) );
100 }
101
102
103
104
105
106
107 public void testParentInheritance()
108 throws Exception
109 {
110 buildPom( "parent-inheritance/sub" );
111 }
112
113
114 public void testExecutionConfigurationJoin()
115 throws Exception
116 {
117 PomTestWrapper pom = buildPom( "execution-configuration-join" );
118 assertEquals( 2, ( (List<?>) pom.getValue( "build/plugins[1]/executions[1]/configuration[1]/fileset[1]" ) ).size() );
119 }
120
121
122 public void testPluginConfigProperties()
123 throws Exception
124 {
125 PomTestWrapper pom = buildPom( "plugin-config-properties" );
126 assertEquals( "my.property", pom.getValue( "build/plugins[1]/configuration[1]/systemProperties[1]/property[1]/name" ) );
127 }
128
129
130 public void testProfilePropertiesInterpolation()
131 throws Exception
132 {
133 PomTestWrapper pom = buildPom( "profile-properties-interpolation", "interpolation-profile" );
134 assertEquals( "PASSED", pom.getValue( "properties[1]/test" ) );
135 assertEquals( "PASSED", pom.getValue( "properties[1]/property" ) );
136 }
137
138
139
140
141
142
143
144
145 public void testThatExecutionsWithoutIdsAreMergedAndTheChildWins()
146 throws Exception
147 {
148 PomTestWrapper tester = buildPom( "micromailer" );
149 assertModelEquals( tester, "child-descriptor", "build/plugins[1]/executions[1]/goals[1]" );
150 }
151
152
153
154
155
156
157
158
159
160
161 public void testDuplicateExclusionsDependency()
162 throws Exception
163 {
164 PomTestWrapper pom = buildPom( "duplicate-exclusions-dependency/sub" );
165 assertEquals( 1, ( (List<?>) pom.getValue( "dependencies[1]/exclusions" ) ).size() );
166
167 }
168
169
170 public void testMultipleFilters()
171 throws Exception
172 {
173 PomTestWrapper pom = buildPom( "multiple-filters" );
174 assertEquals( 4, ( (List<?>) pom.getValue( "build/filters" ) ).size() );
175
176 }
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236 public void testDuplicateDependenciesCauseLastDeclarationToBePickedInLenientMode()
237 throws Exception
238 {
239 PomTestWrapper pom = buildPom( "unique-dependency-key/deps", true, null );
240 assertEquals( 1, ( (List<?>) pom.getValue( "dependencies" ) ).size() );
241 assertEquals( "0.2", pom.getValue( "dependencies[1]/version" ) );
242 }
243
244
245 public void testParentInterpolation()
246 throws Exception
247 {
248 PomTestWrapper pom = buildPom( "parent-interpolation/sub" );
249 pom = new PomTestWrapper( pom.getMavenProject().getParent() );
250 assertEquals( "1.3.0-SNAPSHOT", pom.getValue( "build/plugins[1]/version" ) );
251 }
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268 public void testPluginManagementInherited()
269 throws Exception
270 {
271 PomTestWrapper pom = buildPom( "pluginmanagement-inherited/sub" );
272 assertEquals( "1.0-alpha-21", pom.getValue( "build/plugins[1]/version" ) );
273 }
274
275
276 public void testPluginManagementDependencies()
277 throws Exception
278 {
279 PomTestWrapper pom = buildPom( "plugin-management-dependencies/sub", "test" );
280 assertEquals( "1.0-alpha-21", pom.getValue( "build/plugins[1]/version" ) );
281 assertEquals( "1.0", pom.getValue( "build/plugins[1]/dependencies[1]/version" ) );
282 }
283
284
285
286 public void testReportingInterpolation()
287 throws Exception
288 {
289 PomTestWrapper pom = buildPom( "reporting-interpolation" );
290 assertEquals( createPath( Arrays.asList( System.getProperty( "user.dir" ), "src", "test",
291 "resources-project-builder", "reporting-interpolation", "target",
292 "site" ) ), pom.getValue( "reporting/outputDirectory" ) );
293 }
294
295
296 public void testPluginOrder()
297 throws Exception
298 {
299 PomTestWrapper pom = buildPom( "plugin-order" );
300 assertEquals( "plexus-component-metadata", pom.getValue( "build/plugins[1]/artifactId" ) );
301 assertEquals( "maven-surefire-plugin", pom.getValue( "build/plugins[2]/artifactId" ) );
302 }
303
304 public void testErroneousJoiningOfDifferentPluginsWithEqualDependencies()
305 throws Exception
306 {
307 PomTestWrapper pom = buildPom( "equal-plugin-deps" );
308 assertEquals( "maven-it-plugin-a", pom.getValue( "build/plugins[1]/artifactId" ) );
309 assertEquals( 1, ( (List<?>) pom.getValue( "build/plugins[1]/dependencies" ) ).size() );
310 assertEquals( "maven-it-plugin-b", pom.getValue( "build/plugins[2]/artifactId" ) );
311 assertEquals( 1, ( (List<?>) pom.getValue( "build/plugins[1]/dependencies" ) ).size() );
312 }
313
314
315 public void testErroneousJoiningOfDifferentPluginsWithEqualExecutionIds()
316 throws Exception
317 {
318 PomTestWrapper pom = buildPom( "equal-plugin-exec-ids" );
319 assertEquals( "maven-it-plugin-a", pom.getValue( "build/plugins[1]/artifactId" ) );
320 assertEquals( 1, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
321 assertEquals( "maven-it-plugin-b", pom.getValue( "build/plugins[2]/artifactId" ) );
322 assertEquals( 1, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
323 assertEquals( "maven-it-plugin-a", pom.getValue( "reporting/plugins[1]/artifactId" ) );
324 assertEquals( 1, ( (List<?>) pom.getValue( "reporting/plugins[1]/reportSets" ) ).size() );
325 assertEquals( "maven-it-plugin-b", pom.getValue( "reporting/plugins[2]/artifactId" ) );
326 assertEquals( 1, ( (List<?>) pom.getValue( "reporting/plugins[1]/reportSets" ) ).size() );
327 }
328
329
330 public void testExecutionConfiguration()
331 throws Exception
332 {
333 PomTestWrapper pom = buildPom( "execution-configuration" );
334 assertEquals( 2, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
335 assertEquals( "src/main/mdo/nexus.xml",
336 ( pom.getValue( "build/plugins[1]/executions[1]/configuration[1]/model" ) ) );
337 assertEquals( "src/main/mdo/security.xml",
338 ( pom.getValue( "build/plugins[1]/executions[2]/configuration[1]/model" ) ) );
339 }
340
341
342
343
344
345
346
347
348
349
350 public void testSingleConfigurationInheritance()
351 throws Exception
352 {
353 PomTestWrapper pom = buildPom( "single-configuration-inheritance" );
354
355 assertEquals( 2, ( (List<?>) pom.getValue( "build/plugins[1]/executions[1]/configuration[1]/rules" ) ).size() );
356 assertEquals( "2.0.6",
357 pom.getValue( "build/plugins[1]/executions[1]/configuration[1]/rules[1]/requireMavenVersion[1]/version" ) );
358 assertEquals( "[1.4,)",
359 pom.getValue( "build/plugins[1]/executions[1]/configuration[1]/rules[1]/requireJavaVersion[1]/version" ) );
360 }
361
362 public void testConfigWithPluginManagement()
363 throws Exception
364 {
365 PomTestWrapper pom = buildPom( "config-with-plugin-mng" );
366 assertEquals( 2, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
367 assertEquals( "src/main/mdo/security.xml", pom.getValue( "build/plugins[1]/executions[2]/configuration[1]/model" ) );
368 assertEquals( "1.0.8", pom.getValue( "build/plugins[1]/executions[1]/configuration[1]/version" ) );
369 }
370
371
372 public void testExecutionConfigurationSubcollections()
373 throws Exception
374 {
375 PomTestWrapper pom = buildPom( "execution-configuration-subcollections" );
376 assertEquals( 2, ( (List<?>) pom.getValue( "build/plugins[1]/executions[1]/configuration[1]/rules[1]/bannedDependencies" ) ).size() );
377 }
378
379
380 public void testMultipleRepositories()
381 throws Exception
382 {
383 PomTestWrapper pom = buildPom( "multiple-repos/sub" );
384 assertEquals( 3, ( (List<?>) pom.getValue( "repositories" ) ).size() );
385 }
386
387
388 public void testMultipleExecutionIds()
389 throws Exception
390 {
391 PomTestWrapper pom = buildPom( "dual-execution-ids/sub" );
392 assertEquals( 1, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
393 }
394
395
396 public void testConsecutiveEmptyElements()
397 throws Exception
398 {
399 PomTestWrapper pom = buildPom( "consecutive_empty_elements" );
400 }
401
402 public void testOrderOfGoalsFromPluginExecutionWithoutPluginManagement()
403 throws Exception
404 {
405 PomTestWrapper pom = buildPom( "plugin-exec-goals-order/wo-plugin-mngt" );
406 assertEquals( 5, ( (List<?>) pom.getValue( "build/plugins[1]/executions[1]/goals" ) ).size() );
407 assertEquals( "b", pom.getValue( "build/plugins[1]/executions[1]/goals[1]" ) );
408 assertEquals( "a", pom.getValue( "build/plugins[1]/executions[1]/goals[2]" ) );
409 assertEquals( "d", pom.getValue( "build/plugins[1]/executions[1]/goals[3]" ) );
410 assertEquals( "c", pom.getValue( "build/plugins[1]/executions[1]/goals[4]" ) );
411 assertEquals( "e", pom.getValue( "build/plugins[1]/executions[1]/goals[5]" ) );
412 }
413
414
415 public void testOrderOfGoalsFromPluginExecutionWithPluginManagement()
416 throws Exception
417 {
418 PomTestWrapper pom = buildPom( "plugin-exec-goals-order/w-plugin-mngt" );
419 assertEquals( 5, ( (List<?>) pom.getValue( "build/plugins[1]/executions[1]/goals" ) ).size() );
420 assertEquals( "b", pom.getValue( "build/plugins[1]/executions[1]/goals[1]" ) );
421 assertEquals( "a", pom.getValue( "build/plugins[1]/executions[1]/goals[2]" ) );
422 assertEquals( "d", pom.getValue( "build/plugins[1]/executions[1]/goals[3]" ) );
423 assertEquals( "c", pom.getValue( "build/plugins[1]/executions[1]/goals[4]" ) );
424 assertEquals( "e", pom.getValue( "build/plugins[1]/executions[1]/goals[5]" ) );
425 }
426
427 public void testOrderOfPluginExecutionsWithoutPluginManagement()
428 throws Exception
429 {
430 PomTestWrapper pom = buildPom( "plugin-exec-order/wo-plugin-mngt" );
431 assertEquals( 5, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
432 assertEquals( "b", pom.getValue( "build/plugins[1]/executions[1]/id" ) );
433 assertEquals( "a", pom.getValue( "build/plugins[1]/executions[2]/id" ) );
434 assertEquals( "d", pom.getValue( "build/plugins[1]/executions[3]/id" ) );
435 assertEquals( "c", pom.getValue( "build/plugins[1]/executions[4]/id" ) );
436 assertEquals( "e", pom.getValue( "build/plugins[1]/executions[5]/id" ) );
437 }
438
439
440 public void testOrderOfPluginExecutionsWithPluginManagement()
441 throws Exception
442 {
443 PomTestWrapper pom = buildPom( "plugin-exec-order/w-plugin-mngt" );
444 assertEquals( 5, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
445 assertEquals( "b", pom.getValue( "build/plugins[1]/executions[1]/id" ) );
446 assertEquals( "a", pom.getValue( "build/plugins[1]/executions[2]/id" ) );
447 assertEquals( "d", pom.getValue( "build/plugins[1]/executions[3]/id" ) );
448 assertEquals( "c", pom.getValue( "build/plugins[1]/executions[4]/id" ) );
449 assertEquals( "e", pom.getValue( "build/plugins[1]/executions[5]/id" ) );
450 }
451
452 public void testMergeOfPluginExecutionsWhenChildInheritsPluginVersion()
453 throws Exception
454 {
455 PomTestWrapper pom = buildPom( "plugin-exec-merging-wo-version/sub" );
456 assertEquals( 4, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
457 }
458
459
460 public void testMergeOfPluginExecutionsWhenChildAndParentUseDifferentPluginVersions()
461 throws Exception
462 {
463 PomTestWrapper pom = buildPom( "plugin-exec-merging-version-insensitive/sub" );
464 assertEquals( 4, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
465 }
466
467
468 public void testInterpolationWithXmlMarkup()
469 throws Exception
470 {
471 PomTestWrapper pom = buildPom( "xml-markup-interpolation" );
472 assertEquals( "<?xml version='1.0'?>Tom&Jerry", pom.getValue( "properties/xmlTest" ) );
473 }
474
475
476 public void testOrderOfMergedPluginExecutionsWithoutPluginManagement()
477 throws Exception
478 {
479 PomTestWrapper pom = buildPom( "merged-plugin-exec-order/wo-plugin-mngt/sub" );
480 assertEquals( 5, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
481 assertEquals( "parent-1", pom.getValue( "build/plugins[1]/executions[1]/goals[1]" ) );
482 assertEquals( "parent-2", pom.getValue( "build/plugins[1]/executions[2]/goals[1]" ) );
483 assertEquals( "child-default", pom.getValue( "build/plugins[1]/executions[3]/goals[1]" ) );
484 assertEquals( "child-1", pom.getValue( "build/plugins[1]/executions[4]/goals[1]" ) );
485 assertEquals( "child-2", pom.getValue( "build/plugins[1]/executions[5]/goals[1]" ) );
486 }
487
488 public void testOrderOfMergedPluginExecutionsWithPluginManagement()
489 throws Exception
490 {
491 PomTestWrapper pom = buildPom( "merged-plugin-exec-order/w-plugin-mngt/sub" );
492 assertEquals( 5, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
493 assertEquals( "parent-1", pom.getValue( "build/plugins[1]/executions[1]/goals[1]" ) );
494 assertEquals( "parent-2", pom.getValue( "build/plugins[1]/executions[2]/goals[1]" ) );
495 assertEquals( "child-default", pom.getValue( "build/plugins[1]/executions[3]/goals[1]" ) );
496 assertEquals( "child-1", pom.getValue( "build/plugins[1]/executions[4]/goals[1]" ) );
497 assertEquals( "child-2", pom.getValue( "build/plugins[1]/executions[5]/goals[1]" ) );
498 }
499
500
501 public void testDifferentContainersWithSameId()
502 throws Exception
503 {
504 PomTestWrapper pom = buildPom( "join-different-containers-same-id" );
505 assertEquals( 1, ( (List<?>) pom.getValue( "build/plugins[1]/executions[1]/goals" ) ).size() );
506 assertEquals( 1, ( (List<?>) pom.getValue( "build/pluginManagement/plugins[@artifactId='maven-it-plugin-b']/executions[1]/goals" ) ).size() );
507 }
508
509
510 public void testOrderOfMergedPluginExecutionGoalsWithoutPluginManagement()
511 throws Exception
512 {
513 PomTestWrapper pom = buildPom( "merged-plugin-exec-goals-order/wo-plugin-mngt/sub" );
514
515 assertEquals( 5, ( (List<?>) pom.getValue( "build/plugins[1]/executions[1]/goals" ) ).size() );
516 assertEquals( "child-a", pom.getValue( "build/plugins[1]/executions[1]/goals[1]" ) );
517 assertEquals( "merged", pom.getValue( "build/plugins[1]/executions[1]/goals[2]" ) );
518 assertEquals( "child-b", pom.getValue( "build/plugins[1]/executions[1]/goals[3]" ) );
519 assertEquals( "parent-b", pom.getValue( "build/plugins[1]/executions[1]/goals[4]" ) );
520 assertEquals( "parent-a", pom.getValue( "build/plugins[1]/executions[1]/goals[5]" ) );
521 }
522
523 public void testOrderOfMergedPluginExecutionGoalsWithPluginManagement()
524 throws Exception
525 {
526 PomTestWrapper pom = buildPom( "merged-plugin-exec-goals-order/w-plugin-mngt/sub" );
527 assertEquals( 5, ( (List<?>) pom.getValue( "build/plugins[1]/executions[1]/goals" ) ).size() );
528 assertEquals( "child-a", pom.getValue( "build/plugins[1]/executions[1]/goals[1]" ) );
529 assertEquals( "merged", pom.getValue( "build/plugins[1]/executions[1]/goals[2]" ) );
530 assertEquals( "child-b", pom.getValue( "build/plugins[1]/executions[1]/goals[3]" ) );
531 assertEquals( "parent-b", pom.getValue( "build/plugins[1]/executions[1]/goals[4]" ) );
532 assertEquals( "parent-a", pom.getValue( "build/plugins[1]/executions[1]/goals[5]" ) );
533 }
534
535
536 public void testOverridingOfInheritedPluginExecutionsWithoutPluginManagement()
537 throws Exception
538 {
539 PomTestWrapper pom = buildPom( "plugin-exec-merging/wo-plugin-mngt/sub" );
540 assertEquals( 2, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
541 assertEquals( "child-default", pom.getValue( "build/plugins[1]/executions[@id='default']/phase" ) );
542 assertEquals( "child-non-default", pom.getValue( "build/plugins[1]/executions[@id='non-default']/phase" ) );
543 }
544
545
546 public void testOverridingOfInheritedPluginExecutionsWithPluginManagement()
547 throws Exception
548 {
549 PomTestWrapper pom = buildPom( "plugin-exec-merging/w-plugin-mngt/sub" );
550 assertEquals( 2, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
551 assertEquals( "child-default", pom.getValue( "build/plugins[1]/executions[@id='default']/phase" ) );
552 assertEquals( "child-non-default", pom.getValue( "build/plugins[1]/executions[@id='non-default']/phase" ) );
553 }
554
555
556
557 public void testOrderOfMergedPluginDependenciesWithoutPluginManagement()
558 throws Exception
559 {
560 PomTestWrapper pom = buildPom( "merged-plugin-class-path-order/wo-plugin-mngt/sub" );
561
562 assertEquals( 5, ( (List<?>) pom.getValue( "build/plugins[1]/dependencies" ) ).size() );
563 assertNotNull( pom.getValue( "build/plugins[1]/dependencies[1]" ) );
564 assertEquals( "c", pom.getValue( "build/plugins[1]/dependencies[1]/artifactId" ) );
565 assertEquals( "1", pom.getValue( "build/plugins[1]/dependencies[1]/version" ) );
566 assertEquals( "a", pom.getValue( "build/plugins[1]/dependencies[2]/artifactId" ) );
567 assertEquals( "2", pom.getValue( "build/plugins[1]/dependencies[2]/version" ) );
568 assertEquals( "b", pom.getValue( "build/plugins[1]/dependencies[3]/artifactId" ) );
569 assertEquals( "1", pom.getValue( "build/plugins[1]/dependencies[3]/version" ) );
570 assertEquals( "e", pom.getValue( "build/plugins[1]/dependencies[4]/artifactId" ) );
571 assertEquals( "1", pom.getValue( "build/plugins[1]/dependencies[4]/version" ) );
572 assertEquals( "d", pom.getValue( "build/plugins[1]/dependencies[5]/artifactId" ) );
573 assertEquals( "1", pom.getValue( "build/plugins[1]/dependencies[5]/version" ) );
574 }
575
576 public void testOrderOfMergedPluginDependenciesWithPluginManagement()
577 throws Exception
578 {
579 PomTestWrapper pom = buildPom( "merged-plugin-class-path-order/w-plugin-mngt/sub" );
580 assertEquals( 5, ( (List<?>) pom.getValue( "build/plugins[1]/dependencies" ) ).size() );
581 assertEquals( "c", pom.getValue( "build/plugins[1]/dependencies[1]/artifactId" ) );
582 assertEquals( "1", pom.getValue( "build/plugins[1]/dependencies[1]/version" ) );
583 assertEquals( "a", pom.getValue( "build/plugins[1]/dependencies[2]/artifactId" ) );
584 assertEquals( "2", pom.getValue( "build/plugins[1]/dependencies[2]/version" ) );
585 assertEquals( "b", pom.getValue( "build/plugins[1]/dependencies[3]/artifactId" ) );
586 assertEquals( "1", pom.getValue( "build/plugins[1]/dependencies[3]/version" ) );
587 assertEquals( "e", pom.getValue( "build/plugins[1]/dependencies[4]/artifactId" ) );
588 assertEquals( "1", pom.getValue( "build/plugins[1]/dependencies[4]/version" ) );
589 assertEquals( "d", pom.getValue( "build/plugins[1]/dependencies[5]/artifactId" ) );
590 assertEquals( "1", pom.getValue( "build/plugins[1]/dependencies[5]/version" ) );
591 }
592
593 public void testInterpolationOfNestedBuildDirectories()
594 throws Exception
595 {
596 PomTestWrapper pom = buildPom( "nested-build-dir-interpolation" );
597 assertEquals( new File( pom.getBasedir(), "target/classes/dir0" ),
598 new File( (String) pom.getValue( "properties/dir0" ) ) );
599 assertEquals( new File( pom.getBasedir(), "src/test/dir1" ),
600 new File( (String) pom.getValue( "properties/dir1" ) ) );
601 assertEquals( new File( pom.getBasedir(), "target/site/dir2" ),
602 new File( (String) pom.getValue( "properties/dir2" ) ) );
603 }
604
605 public void testAppendArtifactIdOfChildToInheritedUrls()
606 throws Exception
607 {
608 PomTestWrapper pom = buildPom( "url-inheritance/sub" );
609 assertEquals( "http://parent.url/child", pom.getValue( "url" ) );
610 assertEquals( "http://parent.url/org", pom.getValue( "organization/url" ) );
611 assertEquals( "http://parent.url/license.txt", pom.getValue( "licenses[1]/url" ) );
612 assertEquals( "http://parent.url/viewvc/child", pom.getValue( "scm/url" ) );
613 assertEquals( "http://parent.url/scm/child", pom.getValue( "scm/connection" ) );
614 assertEquals( "https://parent.url/scm/child", pom.getValue( "scm/developerConnection" ) );
615 assertEquals( "http://parent.url/issues", pom.getValue( "issueManagement/url" ) );
616 assertEquals( "http://parent.url/ci", pom.getValue( "ciManagement/url" ) );
617 assertEquals( "http://parent.url/dist", pom.getValue( "distributionManagement/repository/url" ) );
618 assertEquals( "http://parent.url/snaps", pom.getValue( "distributionManagement/snapshotRepository/url" ) );
619 assertEquals( "http://parent.url/site/child", pom.getValue( "distributionManagement/site/url" ) );
620 assertEquals( "http://parent.url/download", pom.getValue( "distributionManagement/downloadUrl" ) );
621 }
622
623
624 public void testAppendArtifactIdOfParentAndChildToInheritedUrls()
625 throws Exception
626 {
627 PomTestWrapper pom = buildPom( "url-inheritance/another-parent/sub" );
628 assertEquals( "http://parent.url/ap/child", pom.getValue( "url" ) );
629 assertEquals( "http://parent.url/org", pom.getValue( "organization/url" ) );
630 assertEquals( "http://parent.url/license.txt", pom.getValue( "licenses[1]/url" ) );
631 assertEquals( "http://parent.url/viewvc/ap/child", pom.getValue( "scm/url" ) );
632 assertEquals( "http://parent.url/scm/ap/child", pom.getValue( "scm/connection" ) );
633 assertEquals( "https://parent.url/scm/ap/child", pom.getValue( "scm/developerConnection" ) );
634 assertEquals( "http://parent.url/issues", pom.getValue( "issueManagement/url" ) );
635 assertEquals( "http://parent.url/ci", pom.getValue( "ciManagement/url" ) );
636 assertEquals( "http://parent.url/dist", pom.getValue( "distributionManagement/repository/url" ) );
637 assertEquals( "http://parent.url/snaps", pom.getValue( "distributionManagement/snapshotRepository/url" ) );
638 assertEquals( "http://parent.url/site/ap/child", pom.getValue( "distributionManagement/site/url" ) );
639 assertEquals( "http://parent.url/download", pom.getValue( "distributionManagement/downloadUrl" ) );
640 }
641 /
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741 public void testInterpolationOfBasedirInPomWithUnusualName()
742 throws Exception
743 {
744 PomTestWrapper pom = buildPom( "basedir-interpolation/pom-with-unusual-name.xml" );
745 assertEquals( pom.getBasedir(), new File( pom.getValue( "properties/prop0" ).toString() ) );
746 assertEquals( pom.getBasedir(), new File( pom.getValue( "properties/prop1" ).toString() ) );
747 }
748
749
750 public void testJoiningOfContainersWhenChildHasEmptyElements()
751 throws Exception
752 {
753 PomTestWrapper pom = buildPom( "id-container-joining-with-empty-elements/sub" );
754 assertNotNull( pom );
755 }
756
757 public void testOrderOfPluginConfigurationElementsWithoutPluginManagement()
758 throws Exception
759 {
760 PomTestWrapper pom = buildPom( "plugin-config-order/wo-plugin-mngt" );
761 assertEquals( "one", pom.getValue( "build/plugins[1]/configuration/stringParams/stringParam[1]" ) );
762 assertEquals( "two", pom.getValue( "build/plugins[1]/configuration/stringParams/stringParam[2]" ) );
763 assertEquals( "three", pom.getValue( "build/plugins[1]/configuration/stringParams/stringParam[3]" ) );
764 assertEquals( "four", pom.getValue( "build/plugins[1]/configuration/stringParams/stringParam[4]" ) );
765 }
766
767
768 public void testOrderOfPluginConfigurationElementsWithPluginManagement()
769 throws Exception
770 {
771 PomTestWrapper pom = buildPom( "plugin-config-order/w-plugin-mngt" );
772 assertEquals( "one", pom.getValue( "build/plugins[1]/configuration/stringParams/stringParam[1]" ) );
773 assertEquals( "two", pom.getValue( "build/plugins[1]/configuration/stringParams/stringParam[2]" ) );
774 assertEquals( "three", pom.getValue( "build/plugins[1]/configuration/stringParams/stringParam[3]" ) );
775 assertEquals( "four", pom.getValue( "build/plugins[1]/configuration/stringParams/stringParam[4]" ) );
776 }
777
778 public void testOrderOfPluginExecutionConfigurationElementsWithoutPluginManagement()
779 throws Exception
780 {
781 PomTestWrapper pom = buildPom( "plugin-exec-config-order/wo-plugin-mngt" );
782 String prefix = "build/plugins[1]/executions[1]/configuration/";
783 assertEquals( "one", pom.getValue( prefix + "stringParams/stringParam[1]" ) );
784 assertEquals( "two", pom.getValue( prefix + "stringParams/stringParam[2]" ) );
785 assertEquals( "three", pom.getValue( prefix + "stringParams/stringParam[3]" ) );
786 assertEquals( "four", pom.getValue( prefix + "stringParams/stringParam[4]" ) );
787 assertEquals( "key1", pom.getValue( prefix + "propertiesParam/property[1]/name" ) );
788 assertEquals( "key2", pom.getValue( prefix + "propertiesParam/property[2]/name" ) );
789 }
790
791
792 public void testOrderOfPluginExecutionConfigurationElementsWithPluginManagement()
793 throws Exception
794 {
795 PomTestWrapper pom = buildPom( "plugin-exec-config-order/w-plugin-mngt" );
796 String prefix = "build/plugins[1]/executions[1]/configuration/";
797 assertEquals( "one", pom.getValue( prefix + "stringParams/stringParam[1]" ) );
798 assertEquals( "two", pom.getValue( prefix + "stringParams/stringParam[2]" ) );
799 assertEquals( "three", pom.getValue( prefix + "stringParams/stringParam[3]" ) );
800 assertEquals( "four", pom.getValue( prefix + "stringParams/stringParam[4]" ) );
801 assertEquals( "key1", pom.getValue( prefix + "propertiesParam/property[1]/name" ) );
802 assertEquals( "key2", pom.getValue( prefix + "propertiesParam/property[2]/name" ) );
803 }
804
805
806 public void testMergeOfInheritedPluginConfiguration()
807 throws Exception
808 {
809 PomTestWrapper pom = buildPom( "plugin-config-merging/child" );
810
811 String prefix = "build/plugins[1]/configuration/";
812 assertEquals( "PASSED", pom.getValue( prefix + "propertiesFile" ) );
813 assertEquals( "PASSED", pom.getValue( prefix + "parent" ) );
814 assertEquals( "PASSED-1", pom.getValue( prefix + "stringParams/stringParam[1]" ) );
815 assertEquals( "PASSED-3", pom.getValue( prefix + "stringParams/stringParam[2]" ) );
816 assertEquals( "PASSED-2", pom.getValue( prefix + "stringParams/stringParam[3]" ) );
817 assertEquals( "PASSED-4", pom.getValue( prefix + "stringParams/stringParam[4]" ) );
818 assertEquals( "PASSED-1", pom.getValue( prefix + "listParam/listParam[1]" ) );
819 assertEquals( "PASSED-3", pom.getValue( prefix + "listParam/listParam[2]" ) );
820 assertEquals( "PASSED-2", pom.getValue( prefix + "listParam/listParam[3]" ) );
821 assertEquals( "PASSED-4", pom.getValue( prefix + "listParam/listParam[4]" ) );
822 }
823
824
825 public void testAppendOfInheritedPluginConfigurationWithNoProfile()
826 throws Exception
827 {
828 testAppendOfInheritedPluginConfiguration( "no-profile" );
829 }
830
831
832 public void testAppendOfInheritedPluginConfigurationWithActiveProfile()
833 throws Exception
834 {
835 testAppendOfInheritedPluginConfiguration( "with-profile" );
836 }
837
838 private void testAppendOfInheritedPluginConfiguration( String test )
839 throws Exception
840 {
841 PomTestWrapper pom = buildPom( "plugin-config-append/" + test + "/subproject" );
842 String prefix = "build/plugins[1]/configuration/";
843 assertEquals( "PARENT-1", pom.getValue( prefix + "stringParams/stringParam[1]" ) );
844 assertEquals( "PARENT-3", pom.getValue( prefix + "stringParams/stringParam[2]" ) );
845 assertEquals( "PARENT-2", pom.getValue( prefix + "stringParams/stringParam[3]" ) );
846 assertEquals( "PARENT-4", pom.getValue( prefix + "stringParams/stringParam[4]" ) );
847 assertEquals( "CHILD-1", pom.getValue( prefix + "stringParams/stringParam[5]" ) );
848 assertEquals( "CHILD-3", pom.getValue( prefix + "stringParams/stringParam[6]" ) );
849 assertEquals( "CHILD-2", pom.getValue( prefix + "stringParams/stringParam[7]" ) );
850 assertEquals( "CHILD-4", pom.getValue( prefix + "stringParams/stringParam[8]" ) );
851 assertEquals( null, pom.getValue( prefix + "stringParams/stringParam[9]" ) );
852 assertEquals( "PARENT-1", pom.getValue( prefix + "listParam/listParam[1]" ) );
853 assertEquals( "PARENT-3", pom.getValue( prefix + "listParam/listParam[2]" ) );
854 assertEquals( "PARENT-2", pom.getValue( prefix + "listParam/listParam[3]" ) );
855 assertEquals( "PARENT-4", pom.getValue( prefix + "listParam/listParam[4]" ) );
856 assertEquals( "CHILD-1", pom.getValue( prefix + "listParam/listParam[5]" ) );
857 assertEquals( "CHILD-3", pom.getValue( prefix + "listParam/listParam[6]" ) );
858 assertEquals( "CHILD-2", pom.getValue( prefix + "listParam/listParam[7]" ) );
859 assertEquals( "CHILD-4", pom.getValue( prefix + "listParam/listParam[8]" ) );
860 assertEquals( null, pom.getValue( prefix + "listParam/listParam[9]" ) );
861 }
862
863
864 public void testMultiplePluginExecutionsWithAndWithoutIdsWithoutPluginManagement()
865 throws Exception
866 {
867 PomTestWrapper pom = buildPom( "plugin-exec-w-and-wo-id/wo-plugin-mngt" );
868 assertEquals( 2, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
869 assertEquals( "log-string", pom.getValue( "build/plugins[1]/executions[1]/goals[1]" ) );
870 assertEquals( "log-string", pom.getValue( "build/plugins[1]/executions[2]/goals[1]" ) );
871 }
872
873 public void testMultiplePluginExecutionsWithAndWithoutIdsWithPluginManagement()
874 throws Exception
875 {
876 PomTestWrapper pom = buildPom( "plugin-exec-w-and-wo-id/w-plugin-mngt" );
877 assertEquals( 2, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
878 assertEquals( "log-string", pom.getValue( "build/plugins[1]/executions[1]/goals[1]" ) );
879 assertEquals( "log-string", pom.getValue( "build/plugins[1]/executions[2]/goals[1]" ) );
880 }
881
882 public void testDependencyOrderWithoutPluginManagement()
883 throws Exception
884 {
885 PomTestWrapper pom = buildPom( "dependency-order/wo-plugin-mngt" );
886 assertEquals( 4, ( (List<?>) pom.getValue( "dependencies" ) ).size() );
887 assertEquals( "a", pom.getValue( "dependencies[1]/artifactId" ) );
888 assertEquals( "c", pom.getValue( "dependencies[2]/artifactId" ) );
889 assertEquals( "b", pom.getValue( "dependencies[3]/artifactId" ) );
890 assertEquals( "d", pom.getValue( "dependencies[4]/artifactId" ) );
891 }
892
893 public void testDependencyOrderWithPluginManagement()
894 throws Exception
895 {
896 PomTestWrapper pom = buildPom( "dependency-order/w-plugin-mngt" );
897 assertEquals( 4, ( (List<?>) pom.getValue( "dependencies" ) ).size() );
898 assertEquals( "a", pom.getValue( "dependencies[1]/artifactId" ) );
899 assertEquals( "c", pom.getValue( "dependencies[2]/artifactId" ) );
900 assertEquals( "b", pom.getValue( "dependencies[3]/artifactId" ) );
901 assertEquals( "d", pom.getValue( "dependencies[4]/artifactId" ) );
902 }
903
904 public void testBuildDirectoriesUsePlatformSpecificFileSeparator()
905 throws Exception
906 {
907 PomTestWrapper pom = buildPom( "platform-file-separator" );
908 assertPathWithNormalizedFileSeparators( pom.getValue( "build/directory" ) );
909 assertPathWithNormalizedFileSeparators( pom.getValue( "build/outputDirectory" ) );
910 assertPathWithNormalizedFileSeparators( pom.getValue( "build/testOutputDirectory" ) );
911 assertPathWithNormalizedFileSeparators( pom.getValue( "build/sourceDirectory" ) );
912 assertPathWithNormalizedFileSeparators( pom.getValue( "build/testSourceDirectory" ) );
913 assertPathWithNormalizedFileSeparators( pom.getValue( "build/resources[1]/directory" ) );
914 assertPathWithNormalizedFileSeparators( pom.getValue( "build/testResources[1]/directory" ) );
915 assertPathWithNormalizedFileSeparators( pom.getValue( "build/filters[1]" ) );
916 assertPathWithNormalizedFileSeparators( pom.getValue( "reporting/outputDirectory" ) );
917 }
918
919
920 public void testMergedFilterOrder()
921 throws Exception
922 {
923 PomTestWrapper pom = buildPom( "merged-filter-order/sub" );
924
925 assertEquals( 7, ( (List<?>) pom.getValue( "build/filters" ) ).size() );
926 assertTrue( pom.getValue( "build/filters[1]" ).toString().endsWith( "child-a.properties" ) );
927 assertTrue( pom.getValue( "build/filters[2]" ).toString().endsWith( "child-c.properties" ) );
928 assertTrue( pom.getValue( "build/filters[3]" ).toString().endsWith( "child-b.properties" ) );
929 assertTrue( pom.getValue( "build/filters[4]" ).toString().endsWith( "child-d.properties" ) );
930 assertTrue( pom.getValue( "build/filters[5]" ).toString().endsWith( "parent-c.properties" ) );
931 assertTrue( pom.getValue( "build/filters[6]" ).toString().endsWith( "parent-b.properties" ) );
932 assertTrue( pom.getValue( "build/filters[7]" ).toString().endsWith( "parent-d.properties" ) );
933 }
934
935
936 public void testProfileInjectedDependencies()
937 throws Exception
938 {
939 PomTestWrapper pom = buildPom( "profile-injected-dependencies" );
940 assertEquals( 4, ( (List<?>) pom.getValue( "dependencies" ) ).size() );
941 assertEquals( "a", pom.getValue( "dependencies[1]/artifactId" ) );
942 assertEquals( "c", pom.getValue( "dependencies[2]/artifactId" ) );
943 assertEquals( "b", pom.getValue( "dependencies[3]/artifactId" ) );
944 assertEquals( "d", pom.getValue( "dependencies[4]/artifactId" ) );
945 }
946
947
948 public void testProfileDependenciesMultipleProfiles()
949 throws Exception
950 {
951 PomTestWrapper pom = buildPom( "profile-dependencies-multiple-profiles", "profile-1", "profile-2" );
952 assertEquals(2, ( (List<?>) pom.getValue( "dependencies" ) ).size() );
953 }
954
955 public void testDependencyInheritance()
956 throws Exception
957 {
958 PomTestWrapper pom = buildPom( "dependency-inheritance/sub" );
959 assertEquals( 1, ( (List<?>) pom.getValue( "dependencies" ) ).size() );
960 assertEquals( "4.4", pom.getValue( "dependencies[1]/version" ) );
961 }
962
963
964 public void testManagedProfileDependency()
965 throws Exception
966 {
967 PomTestWrapper pom = this.buildPom( "managed-profile-dependency/sub", "maven-core-it" );
968 assertEquals( 1, ( (List<?>) pom.getValue( "dependencies" ) ).size() );
969 assertEquals( "org.apache.maven.its", pom.getValue( "dependencies[1]/groupId" ) );
970 assertEquals( "maven-core-it-support", pom.getValue( "dependencies[1]/artifactId" ) );
971 assertEquals( "1.3", pom.getValue( "dependencies[1]/version" ) );
972 assertEquals( "runtime", pom.getValue( "dependencies[1]/scope" ) );
973 assertEquals( 1, ( (List<?>) pom.getValue( "dependencies[1]/exclusions" ) ).size() );
974 assertEquals( "commons-lang", pom.getValue( "dependencies[1]/exclusions[1]/groupId" ) );
975 }
976
977
978 public void testProfileModuleInheritance()
979 throws Exception
980 {
981 PomTestWrapper pom = this.buildPom( "profile-module-inheritance/sub", "dist" );
982 assertEquals( 0, ( (List<?>) pom.getValue( "modules" ) ).size() );
983 }
984
985
986 public void testUncPath()
987 throws Exception
988 {
989 PomTestWrapper pom = this.buildPom( "unc-path/sub" );
990 assertEquals( "file:////host/site/test-child", pom.getValue( "distributionManagement/site/url" ) );
991 }
992
993
994 public void testUrlAppendWithChildPathAdjustment()
995 throws Exception
996 {
997 PomTestWrapper pom = this.buildPom( "url-append/child" );
998 assertEquals( "http://project.url/child", pom.getValue( "url" ) );
999 assertEquals( "http://viewvc.project.url/child", pom.getValue( "scm/url" ) );
1000 assertEquals( "http://scm.project.url/child", pom.getValue( "scm/connection" ) );
1001 assertEquals( "https://scm.project.url/child", pom.getValue( "scm/developerConnection" ) );
1002 assertEquals( "http://site.project.url/child", pom.getValue( "distributionManagement/site/url" ) );
1003 }
1004
1005
1006 public void testRepoInheritance()
1007 throws Exception
1008 {
1009 PomTestWrapper pom = this.buildPom( "repo-inheritance" );
1010 assertEquals( 1, ( (List<?>) pom.getValue( "repositories" ) ).size() );
1011 assertEquals( "it0043", pom.getValue( "repositories[1]/name" ) );
1012 }
1013
1014 public void testEmptyScm()
1015 throws Exception
1016 {
1017 PomTestWrapper pom = this.buildPom( "empty-scm" );
1018 assertNull( pom.getValue( "scm" ) );
1019 }
1020
1021 public void testPluginConfigurationUsingAttributesWithoutPluginManagement()
1022 throws Exception
1023 {
1024 PomTestWrapper pom = buildPom( "plugin-config-attributes/wo-plugin-mngt" );
1025 assertEquals( "src", pom.getValue( "build/plugins[1]/configuration/domParam/copy/@todir" ) );
1026 assertEquals( "true", pom.getValue( "build/plugins[1]/configuration/domParam/copy/@overwrite" ) );
1027 assertEquals( "target", pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@dir" ) );
1028 assertEquals( null, pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@todir" ) );
1029 assertEquals( null, pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@overwrite" ) );
1030 }
1031
1032
1033 public void testPluginConfigurationUsingAttributesWithPluginManagement()
1034 throws Exception
1035 {
1036 PomTestWrapper pom = buildPom( "plugin-config-attributes/w-plugin-mngt" );
1037 assertEquals( "src", pom.getValue( "build/plugins[1]/configuration/domParam/copy/@todir" ) );
1038 assertEquals( "true", pom.getValue( "build/plugins[1]/configuration/domParam/copy/@overwrite" ) );
1039 assertEquals( "target", pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@dir" ) );
1040 assertEquals( null, pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@todir" ) );
1041 assertEquals( null, pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@overwrite" ) );
1042 }
1043
1044 public void testPluginConfigurationUsingAttributesWithPluginManagementAndProfile()
1045 throws Exception
1046 {
1047 PomTestWrapper pom = buildPom( "plugin-config-attributes/w-profile", "maven-core-it" );
1048 assertEquals( "src", pom.getValue( "build/plugins[1]/configuration/domParam/copy/@todir" ) );
1049 assertEquals( "true", pom.getValue( "build/plugins[1]/configuration/domParam/copy/@overwrite" ) );
1050 assertEquals( "target", pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@dir" ) );
1051 assertEquals( null, pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@todir" ) );
1052 assertEquals( null, pom.getValue( "build/plugins[1]/configuration/domParam/copy/fileset/@overwrite" ) );
1053 }
1054
1055 public void testPomEncoding()
1056 throws Exception
1057 {
1058 PomTestWrapper pom = buildPom( "pom-encoding/utf-8" );
1059 assertEquals( "TEST-CHARS: \u00DF\u0131\u03A3\u042F\u05D0\u20AC", pom.getValue( "description" ) );
1060 pom = buildPom( "pom-encoding/latin-1" );
1061 assertEquals( "TEST-CHARS: \u00C4\u00D6\u00DC\u00E4\u00F6\u00FC\u00DF", pom.getValue( "description" ) );
1062 }
1063
1064
1065 public void testXmlWhitespaceHandling()
1066 throws Exception
1067 {
1068 PomTestWrapper pom = buildPom( "xml-whitespace/sub" );
1069 assertEquals( "org.apache.maven.its.mng4070", pom.getValue( "groupId" ) );
1070 }
1071
1072
1073 public void testInterpolationOfBaseUrl()
1074 throws Exception
1075 {
1076 PomTestWrapper pom = buildPom( "baseurl-interpolation/pom.xml" );
1077 assertEquals( pom.getBasedir().toURI().toString(), pom.getValue( "properties/prop1" ).toString() );
1078 }
1079
1080
1081 public void testReportingPluginConfig()
1082 throws Exception
1083 {
1084 PomTestWrapper pom = buildPom( "reporting-plugin-config/sub" );
1085
1086 assertEquals( 2, ( (List<?>) pom.getValue( "reporting/plugins[1]/configuration/stringParams" ) ).size() );
1087 assertEquals( "parentParam", pom.getValue( "reporting/plugins[1]/configuration/stringParams[1]/stringParam[1]" ) );
1088 assertEquals( "childParam", pom.getValue( "reporting/plugins[1]/configuration/stringParams[1]/stringParam[2]" ) );
1089 assertEquals( "true", pom.getValue( "reporting/plugins[1]/configuration/booleanParam" ) );
1090 }
1091
1092 public void testPropertiesNoDuplication()
1093 throws Exception
1094 {
1095 PomTestWrapper pom = buildPom( "properties-no-duplication/sub" );
1096 assertEquals( 1, ( (Properties) pom.getValue( "properties" ) ).size() );
1097 assertEquals( "child", pom.getValue( "properties/pomProfile" ) );
1098 }
1099
1100 public void testPomInheritance()
1101 throws Exception
1102 {
1103 PomTestWrapper pom = buildPom( "pom-inheritance/sub" );
1104 assertEquals( "parent-description", pom.getValue( "description" ) );
1105 assertEquals( "jar", pom.getValue( "packaging" ) );
1106 }
1107
1108 public void testCompleteModelWithoutParent()
1109 throws Exception
1110 {
1111 PomTestWrapper pom = buildPom( "complete-model/wo-parent" );
1112
1113 testCompleteModel( pom );
1114 }
1115
1116 public void testCompleteModelWithParent()
1117 throws Exception
1118 {
1119 PomTestWrapper pom = buildPom( "complete-model/w-parent/sub" );
1120
1121 testCompleteModel( pom );
1122 }
1123
1124 private void testCompleteModel( PomTestWrapper pom )
1125 throws Exception
1126 {
1127 assertEquals( "4.0.0", pom.getValue( "modelVersion" ) );
1128
1129 assertEquals( "org.apache.maven.its.mng", pom.getValue( "groupId" ) );
1130 assertEquals( "test", pom.getValue( "artifactId" ) );
1131 assertEquals( "0.2", pom.getValue( "version" ) );
1132 assertEquals( "pom", pom.getValue( "packaging" ) );
1133
1134 assertEquals( "project-name", pom.getValue( "name" ) );
1135 assertEquals( "project-description", pom.getValue( "description" ) );
1136 assertEquals( "http://project.url/", pom.getValue( "url" ) );
1137 assertEquals( "2009", pom.getValue( "inceptionYear" ) );
1138
1139 assertEquals( "project-org", pom.getValue( "organization/name" ) );
1140 assertEquals( "http://project-org.url/", pom.getValue( "organization/url" ) );
1141
1142 assertEquals( 1, ( (List<?>) pom.getValue( "licenses" ) ).size() );
1143 assertEquals( "project-license", pom.getValue( "licenses[1]/name" ) );
1144 assertEquals( "http://project.url/license", pom.getValue( "licenses[1]/url" ) );
1145 assertEquals( "repo", pom.getValue( "licenses[1]/distribution" ) );
1146 assertEquals( "free", pom.getValue( "licenses[1]/comments" ) );
1147
1148 assertEquals( 1, ( (List<?>) pom.getValue( "developers" ) ).size() );
1149 assertEquals( "dev", pom.getValue( "developers[1]/id" ) );
1150 assertEquals( "project-developer", pom.getValue( "developers[1]/name" ) );
1151 assertEquals( "developer@", pom.getValue( "developers[1]/email" ) );
1152 assertEquals( "http://developer", pom.getValue( "developers[1]/url" ) );
1153 assertEquals( "developer", pom.getValue( "developers[1]/organization" ) );
1154 assertEquals( "http://devel.org", pom.getValue( "developers[1]/organizationUrl" ) );
1155 assertEquals( "-1", pom.getValue( "developers[1]/timezone" ) );
1156 assertEquals( "yes", pom.getValue( "developers[1]/properties/developer" ) );
1157 assertEquals( 1, ( (List<?>) pom.getValue( "developers[1]/roles" ) ).size() );
1158 assertEquals( "devel", pom.getValue( "developers[1]/roles[1]" ) );
1159
1160 assertEquals( 1, ( (List<?>) pom.getValue( "contributors" ) ).size() );
1161 assertEquals( "project-contributor", pom.getValue( "contributors[1]/name" ) );
1162 assertEquals( "contributor@", pom.getValue( "contributors[1]/email" ) );
1163 assertEquals( "http://contributor", pom.getValue( "contributors[1]/url" ) );
1164 assertEquals( "contributor", pom.getValue( "contributors[1]/organization" ) );
1165 assertEquals( "http://contrib.org", pom.getValue( "contributors[1]/organizationUrl" ) );
1166 assertEquals( "+1", pom.getValue( "contributors[1]/timezone" ) );
1167 assertEquals( "yes", pom.getValue( "contributors[1]/properties/contributor" ) );
1168 assertEquals( 1, ( (List<?>) pom.getValue( "contributors[1]/roles" ) ).size() );
1169 assertEquals( "contrib", pom.getValue( "contributors[1]/roles[1]" ) );
1170
1171 assertEquals( 1, ( (List<?>) pom.getValue( "mailingLists" ) ).size() );
1172 assertEquals( "project-mailing-list", pom.getValue( "mailingLists[1]/name" ) );
1173 assertEquals( "subscribe@", pom.getValue( "mailingLists[1]/subscribe" ) );
1174 assertEquals( "unsubscribe@", pom.getValue( "mailingLists[1]/unsubscribe" ) );
1175 assertEquals( "post@", pom.getValue( "mailingLists[1]/post" ) );
1176 assertEquals( "mail-archive", pom.getValue( "mailingLists[1]/archive" ) );
1177 assertEquals( 1, ( (List<?>) pom.getValue( "mailingLists[1]/otherArchives" ) ).size() );
1178 assertEquals( "other-archive", pom.getValue( "mailingLists[1]/otherArchives[1]" ) );
1179
1180 assertEquals( "2.0.1", pom.getValue( "prerequisites/maven" ) );
1181
1182 assertEquals( "http://project.url/trunk", pom.getValue( "scm/url" ) );
1183 assertEquals( "http://project.url/scm", pom.getValue( "scm/connection" ) );
1184 assertEquals( "https://project.url/scm", pom.getValue( "scm/developerConnection" ) );
1185 assertEquals( "TAG", pom.getValue( "scm/tag" ) );
1186
1187 assertEquals( "issues", pom.getValue( "issueManagement/system" ) );
1188 assertEquals( "http://project.url/issues", pom.getValue( "issueManagement/url" ) );
1189
1190 assertEquals( "ci", pom.getValue( "ciManagement/system" ) );
1191 assertEquals( "http://project.url/ci", pom.getValue( "ciManagement/url" ) );
1192 assertEquals( 1, ( (List<?>) pom.getValue( "ciManagement/notifiers" ) ).size() );
1193 assertEquals( "irc", pom.getValue( "ciManagement/notifiers[1]/type" ) );
1194 assertEquals( "ci@", pom.getValue( "ciManagement/notifiers[1]/address" ) );
1195 assertEquals( Boolean.TRUE, pom.getValue( "ciManagement/notifiers[1]/sendOnError" ) );
1196 assertEquals( Boolean.FALSE, pom.getValue( "ciManagement/notifiers[1]/sendOnFailure" ) );
1197 assertEquals( Boolean.FALSE, pom.getValue( "ciManagement/notifiers[1]/sendOnWarning" ) );
1198 assertEquals( Boolean.FALSE, pom.getValue( "ciManagement/notifiers[1]/sendOnSuccess" ) );
1199 assertEquals( "ci", pom.getValue( "ciManagement/notifiers[1]/configuration/ciProp" ) );
1200
1201 assertEquals( "project.distros", pom.getValue( "distributionManagement/repository/id" ) );
1202 assertEquals( "distros", pom.getValue( "distributionManagement/repository/name" ) );
1203 assertEquals( "http://project.url/dist", pom.getValue( "distributionManagement/repository/url" ) );
1204 assertEquals( Boolean.TRUE, pom.getValue( "distributionManagement/repository/uniqueVersion" ) );
1205
1206 assertEquals( "project.snaps", pom.getValue( "distributionManagement/snapshotRepository/id" ) );
1207 assertEquals( "snaps", pom.getValue( "distributionManagement/snapshotRepository/name" ) );
1208 assertEquals( "http://project.url/snaps", pom.getValue( "distributionManagement/snapshotRepository/url" ) );
1209 assertEquals( Boolean.FALSE, pom.getValue( "distributionManagement/snapshotRepository/uniqueVersion" ) );
1210
1211 assertEquals( "project.site", pom.getValue( "distributionManagement/site/id" ) );
1212 assertEquals( "docs", pom.getValue( "distributionManagement/site/name" ) );
1213 assertEquals( "http://project.url/site", pom.getValue( "distributionManagement/site/url" ) );
1214
1215 assertEquals( "http://project.url/download", pom.getValue( "distributionManagement/downloadUrl" ) );
1216 assertEquals( "reloc-gid", pom.getValue( "distributionManagement/relocation/groupId" ) );
1217 assertEquals( "reloc-aid", pom.getValue( "distributionManagement/relocation/artifactId" ) );
1218 assertEquals( "reloc-version", pom.getValue( "distributionManagement/relocation/version" ) );
1219 assertEquals( "project-reloc-msg", pom.getValue( "distributionManagement/relocation/message" ) );
1220
1221 assertEquals( 1, ( (List<?>) pom.getValue( "modules" ) ).size() );
1222 assertEquals( "sub", pom.getValue( "modules[1]" ) );
1223
1224 assertEquals( 1, ( (Map<?, ?>) pom.getValue( "properties" ) ).size() );
1225 assertEquals( "project-property", pom.getValue( "properties[1]/itProperty" ) );
1226
1227 assertEquals( 1, ( (List<?>) pom.getValue( "dependencyManagement/dependencies" ) ).size() );
1228 assertEquals( "org.apache.maven.its", pom.getValue( "dependencyManagement/dependencies[1]/groupId" ) );
1229 assertEquals( "managed-dep", pom.getValue( "dependencyManagement/dependencies[1]/artifactId" ) );
1230 assertEquals( "0.1", pom.getValue( "dependencyManagement/dependencies[1]/version" ) );
1231 assertEquals( "war", pom.getValue( "dependencyManagement/dependencies[1]/type" ) );
1232 assertEquals( "runtime", pom.getValue( "dependencyManagement/dependencies[1]/scope" ) );
1233 assertEquals( Boolean.FALSE, pom.getValue( "dependencyManagement/dependencies[1]/optional" ) );
1234 assertEquals( 1, ( (List<?>) pom.getValue( "dependencyManagement/dependencies[1]/exclusions" ) ).size() );
1235 assertEquals( "org.apache.maven.its",
1236 pom.getValue( "dependencyManagement/dependencies[1]/exclusions[1]/groupId" ) );
1237 assertEquals( "excluded-managed-dep",
1238 pom.getValue( "dependencyManagement/dependencies[1]/exclusions[1]/artifactId" ) );
1239
1240 assertEquals( 1, ( (List<?>) pom.getValue( "dependencies" ) ).size() );
1241 assertEquals( "org.apache.maven.its", pom.getValue( "dependencies[1]/groupId" ) );
1242 assertEquals( "dep", pom.getValue( "dependencies[1]/artifactId" ) );
1243 assertEquals( "0.2", pom.getValue( "dependencies[1]/version" ) );
1244 assertEquals( "ejb", pom.getValue( "dependencies[1]/type" ) );
1245 assertEquals( "test", pom.getValue( "dependencies[1]/scope" ) );
1246 assertEquals( Boolean.TRUE, pom.getValue( "dependencies[1]/optional" ) );
1247 assertEquals( 1, ( (List<?>) pom.getValue( "dependencies[1]/exclusions" ) ).size() );
1248 assertEquals( "org.apache.maven.its", pom.getValue( "dependencies[1]/exclusions[1]/groupId" ) );
1249 assertEquals( "excluded-dep", pom.getValue( "dependencies[1]/exclusions[1]/artifactId" ) );
1250
1251 assertEquals( 2, ( (List<?>) pom.getValue( "repositories" ) ).size() );
1252 assertEquals( "project-remote-repo", pom.getValue( "repositories[1]/id" ) );
1253 assertEquals( "http://project.url/remote", pom.getValue( "repositories[1]/url" ) );
1254 assertEquals( "repo", pom.getValue( "repositories[1]/name" ) );
1255 assertEquals( RepositorySystem.DEFAULT_REMOTE_REPO_ID, pom.getValue( "repositories[2]/id" ) );
1256 assertEquals( RepositorySystem.DEFAULT_REMOTE_REPO_URL, pom.getValue( "repositories[2]/url" ) );
1257
1258 assertEquals( "test", pom.getValue( "build/defaultGoal" ) );
1259 assertEquals( "coreit", pom.getValue( "build/finalName" ) );
1260
1261 assertPathSuffixEquals( "build", pom.getValue( "build/directory" ) );
1262 assertPathSuffixEquals( "build/main", pom.getValue( "build/outputDirectory" ) );
1263 assertPathSuffixEquals( "build/test", pom.getValue( "build/testOutputDirectory" ) );
1264 assertPathSuffixEquals( "sources/main", pom.getValue( "build/sourceDirectory" ) );
1265 assertPathSuffixEquals( "sources/test", pom.getValue( "build/testSourceDirectory" ) );
1266 assertPathSuffixEquals( "sources/scripts", pom.getValue( "build/scriptSourceDirectory" ) );
1267
1268 assertEquals( 1, ( (List<?>) pom.getValue( "build/filters" ) ).size() );
1269 assertPathSuffixEquals( "src/main/filter/it.properties", pom.getValue( "build/filters[1]" ) );
1270
1271 assertEquals( 1, ( (List<?>) pom.getValue( "build/resources" ) ).size() );
1272 assertPathSuffixEquals( "res/main", pom.getValue( "build/resources[1]/directory" ) );
1273 assertPathSuffixEquals( "main", pom.getValue( "build/resources[1]/targetPath" ) );
1274 assertEquals( Boolean.TRUE, pom.getValue( "build/resources[1]/filtering" ) );
1275 assertEquals( 1, ( (List<?>) pom.getValue( "build/resources[1]/includes" ) ).size() );
1276 assertPathSuffixEquals( "main.included", pom.getValue( "build/resources[1]/includes[1]" ) );
1277 assertEquals( 1, ( (List<?>) pom.getValue( "build/resources[1]/excludes" ) ).size() );
1278 assertPathSuffixEquals( "main.excluded", pom.getValue( "build/resources[1]/excludes[1]" ) );
1279
1280 assertEquals( 1, ( (List<?>) pom.getValue( "build/testResources" ) ).size() );
1281 assertPathSuffixEquals( "res/test", pom.getValue( "build/testResources[1]/directory" ) );
1282 assertPathSuffixEquals( "test", pom.getValue( "build/testResources[1]/targetPath" ) );
1283 assertEquals( Boolean.TRUE, pom.getValue( "build/testResources[1]/filtering" ) );
1284 assertEquals( 1, ( (List<?>) pom.getValue( "build/testResources[1]/includes" ) ).size() );
1285 assertPathSuffixEquals( "test.included", pom.getValue( "build/testResources[1]/includes[1]" ) );
1286 assertEquals( 1, ( (List<?>) pom.getValue( "build/testResources[1]/excludes" ) ).size() );
1287 assertPathSuffixEquals( "test.excluded", pom.getValue( "build/testResources[1]/excludes[1]" ) );
1288
1289 assertEquals( 1, ( (List<?>) pom.getValue( "build/extensions" ) ).size() );
1290 assertEquals( "org.apache.maven.its.ext", pom.getValue( "build/extensions[1]/groupId" ) );
1291 assertEquals( "ext", pom.getValue( "build/extensions[1]/artifactId" ) );
1292 assertEquals( "3.0", pom.getValue( "build/extensions[1]/version" ) );
1293
1294 assertEquals( 1, ( (List<?>) pom.getValue( "build/plugins" ) ).size() );
1295 assertEquals( "org.apache.maven.its.plugins", pom.getValue( "build/plugins[1]/groupId" ) );
1296 assertEquals( "maven-it-plugin-build", pom.getValue( "build/plugins[1]/artifactId" ) );
1297 assertEquals( "2.1-SNAPSHOT", pom.getValue( "build/plugins[1]/version" ) );
1298 assertEquals( "test.properties", pom.getValue( "build/plugins[1]/configuration/outputFile" ) );
1299 assertEquals( 1, ( (List<?>) pom.getValue( "build/plugins[1]/executions" ) ).size() );
1300 assertEquals( "test", pom.getValue( "build/plugins[1]/executions[1]/id" ) );
1301 assertEquals( "validate", pom.getValue( "build/plugins[1]/executions[1]/phase" ) );
1302 assertEquals( "pom.properties", pom.getValue( "build/plugins[1]/executions[1]/configuration/outputFile" ) );
1303 assertEquals( 1, ( (List<?>) pom.getValue( "build/plugins[1]/executions[1]/goals" ) ).size() );
1304 assertEquals( "eval", pom.getValue( "build/plugins[1]/executions[1]/goals[1]" ) );
1305 assertEquals( 1, ( (List<?>) pom.getValue( "build/plugins[1]/dependencies" ) ).size() );
1306 assertEquals( "org.apache.maven.its", pom.getValue( "build/plugins[1]/dependencies[1]/groupId" ) );
1307 assertEquals( "build-plugin-dep", pom.getValue( "build/plugins[1]/dependencies[1]/artifactId" ) );
1308 assertEquals( "0.3", pom.getValue( "build/plugins[1]/dependencies[1]/version" ) );
1309 assertEquals( "zip", pom.getValue( "build/plugins[1]/dependencies[1]/type" ) );
1310 assertEquals( 1, ( (List<?>) pom.getValue( "build/plugins[1]/dependencies[1]/exclusions" ) ).size() );
1311 assertEquals( "org.apache.maven.its", pom.getValue( "build/plugins[1]/dependencies[1]/exclusions[1]/groupId" ) );
1312 assertEquals( "excluded-build-plugin-dep",
1313 pom.getValue( "build/plugins[1]/dependencies[1]/exclusions[1]/artifactId" ) );
1314
1315 assertEquals( Boolean.TRUE, pom.getValue( "reporting/excludeDefaults" ) );
1316 assertPathSuffixEquals( "docs", pom.getValue( "reporting/outputDirectory" ) );
1317
1318 assertEquals( 1, ( (List<?>) pom.getValue( "reporting/plugins" ) ).size() );
1319 assertEquals( "org.apache.maven.its.plugins", pom.getValue( "reporting/plugins[1]/groupId" ) );
1320 assertEquals( "maven-it-plugin-reporting", pom.getValue( "reporting/plugins[1]/artifactId" ) );
1321 assertEquals( "2.0-SNAPSHOT", pom.getValue( "reporting/plugins[1]/version" ) );
1322 assertEquals( "test.html", pom.getValue( "reporting/plugins[1]/configuration/outputFile" ) );
1323 assertEquals( 1, ( (List<?>) pom.getValue( "reporting/plugins[1]/reportSets" ) ).size() );
1324 assertEquals( "it", pom.getValue( "reporting/plugins[1]/reportSets[1]/id" ) );
1325 assertEquals( "index.html", pom.getValue( "reporting/plugins[1]/reportSets[1]/configuration/outputFile" ) );
1326 assertEquals( 1, ( (List<?>) pom.getValue( "reporting/plugins[1]/reportSets[1]/reports" ) ).size() );
1327 assertEquals( "run", pom.getValue( "reporting/plugins[1]/reportSets[1]/reports[1]" ) );
1328 }
1329
1330
1331
1332 public void testProfileInjectionOrder()
1333 throws Exception
1334 {
1335 PomTestWrapper pom =
1336 buildPom( "profile-injection-order", "pom-a", "pom-b", "pom-e", "pom-c", "pom-d" );
1337 assertEquals( "e", pom.getValue( "properties[1]/pomProperty" ) );
1338 }
1339
1340 public void testPropertiesInheritance()
1341 throws Exception
1342 {
1343 PomTestWrapper pom = buildPom( "properties-inheritance/sub" );
1344 assertEquals( "parent-property", pom.getValue( "properties/parentProperty" ) );
1345 assertEquals( "child-property", pom.getValue( "properties/childProperty" ) );
1346 assertEquals( "child-override", pom.getValue( "properties/overriddenProperty" ) );
1347 }
1348
1349
1350 public void testInheritedPropertiesInterpolatedWithValuesFromChildWithoutProfiles()
1351 throws Exception
1352 {
1353 PomTestWrapper pom = buildPom( "inherited-properties-interpolation/no-profile/sub" );
1354
1355 assertEquals( "CHILD", pom.getValue( "properties/overridden" ) );
1356 assertEquals( "CHILD", pom.getValue( "properties/interpolated" ) );
1357 }
1358
1359
1360 public void testInheritedPropertiesInterpolatedWithValuesFromChildWithActiveProfiles()
1361 throws Exception
1362 {
1363 PomTestWrapper pom = buildPom( "inherited-properties-interpolation/active-profile/sub" );
1364
1365 assertEquals( 1, pom.getMavenProject().getModel().getProfiles().size() );
1366
1367 buildPom( "inherited-properties-interpolation/active-profile/sub", "it-parent", "it-child" );
1368 assertEquals( "CHILD", pom.getValue( "properties/overridden" ) );
1369 assertEquals( "CHILD", pom.getValue( "properties/interpolated" ) );
1370 }
1371
1372
1373 public void testProfileDefaultActivation()
1374 throws Exception
1375 {
1376 PomTestWrapper pom = buildPom( "profile-default-deactivation", "profile4" );
1377 assertEquals( 1, pom.getMavenProject().getActiveProfiles().size() );
1378 assertEquals( 1, ( (List<?>) pom.getValue( "build/plugins" ) ).size() );
1379 assertEquals( "2.1", pom.getValue( "build/plugins[1]/version" ) );
1380 }
1381
1382
1383 public void testBooleanInterpolation()
1384 throws Exception
1385 {
1386 PomTestWrapper pom = buildPom( "boolean-interpolation" );
1387 assertTrue ((Boolean) pom.getValue( "repositories[1]/releases/enabled" ) );
1388 assertTrue((Boolean) pom.getValue( "build/resources[1]/filtering" ) );
1389 }
1390
1391
1392
1393 public void testBuildExtensionInheritance()
1394 throws Exception
1395 {
1396 PomTestWrapper pom = buildPom( "build-extension-inheritance/sub" );
1397 assertEquals( 3, ( (List<?>) pom.getValue( "build/extensions" ) ).size() );
1398 assertEquals( "b", pom.getValue( "build/extensions[1]/artifactId" ) );
1399 assertEquals( "a", pom.getValue( "build/extensions[2]/artifactId" ) );
1400 assertEquals( "0.2", pom.getValue( "build/extensions[2]/version" ) );
1401 assertEquals( "c", pom.getValue( "build/extensions[3]/artifactId" ) );
1402 }
1403
1404
1405 public void testJdkActivation()
1406 throws Exception
1407 {
1408 Properties props = new Properties();
1409 props.put( "java.version", "1.5.0_15" );
1410
1411 PomTestWrapper pom = buildPom( "jdk-activation", props );
1412 assertEquals( 3, pom.getMavenProject().getActiveProfiles().size() );
1413 assertEquals( "PASSED", pom.getValue( "properties/jdkProperty3" ) );
1414 assertEquals( "PASSED", pom.getValue( "properties/jdkProperty2" ) );
1415 assertEquals( "PASSED", pom.getValue( "properties/jdkProperty1" ) );
1416 }
1417
1418
1419 public void testProfilePluginMngDependencies()
1420 throws Exception
1421 {
1422 PomTestWrapper pom = buildPom( "profile-plugin-mng-dependencies/sub", "maven-core-it" );
1423 assertEquals( "a", pom.getValue( "build/plugins[1]/dependencies[1]/artifactId" ) );
1424 }
1425
1426
1427 public void testPercentEncodedUrlsMustNotBeDecoded()
1428 throws Exception
1429 {
1430 PomTestWrapper pom = this.buildPom( "url-no-decoding" );
1431 assertEquals( "http://maven.apache.org/spacy%20path", pom.getValue( "url" ) );
1432 assertEquals( "http://svn.apache.org/viewvc/spacy%20path", pom.getValue( "scm/url" ) );
1433 assertEquals( "scm:svn:svn+ssh://svn.apache.org/spacy%20path", pom.getValue( "scm/connection" ) );
1434 assertEquals( "scm:svn:svn+ssh://svn.apache.org/spacy%20path", pom.getValue( "scm/developerConnection" ) );
1435 assertEquals( "http://issues.apache.org/spacy%20path", pom.getValue( "issueManagement/url" ) );
1436 assertEquals( "http://ci.apache.org/spacy%20path", pom.getValue( "ciManagement/url" ) );
1437 assertEquals( "scm:svn:svn+ssh://dist.apache.org/spacy%20path",
1438 pom.getValue( "distributionManagement/repository/url" ) );
1439 assertEquals( "scm:svn:svn+ssh://snap.apache.org/spacy%20path",
1440 pom.getValue( "distributionManagement/snapshotRepository/url" ) );
1441 assertEquals( "scm:svn:svn+ssh://site.apache.org/spacy%20path",
1442 pom.getValue( "distributionManagement/site/url" ) );
1443 }
1444
1445 public void testPluginManagementInheritance()
1446 throws Exception
1447 {
1448 PomTestWrapper pom = this.buildPom( "plugin-management-inheritance" );
1449 assertEquals( "0.1-stub-SNAPSHOT",
1450 pom.getValue( "build/pluginManagement/plugins[@artifactId='maven-compiler-plugin']/version" ) );
1451 }
1452
1453 public void testProfilePlugins()
1454 throws Exception
1455 {
1456 PomTestWrapper pom = this.buildPom( "profile-plugins", "standard" );
1457 assertEquals( 2, ( (List<?>) pom.getValue( "build/plugins" ) ).size() );
1458 assertEquals( "maven-assembly2-plugin", pom.getValue( "build/plugins[2]/artifactId" ) );
1459 }
1460
1461 public void testPluginInheritanceSimple()
1462 throws Exception
1463 {
1464 PomTestWrapper pom = this.buildPom( "plugin-inheritance-simple/sub" );
1465 assertEquals( 2, ( (List<?>) pom.getValue( "build/plugins" ) ).size() );
1466 }
1467
1468 public void testPluginManagementDuplicate()
1469 throws Exception
1470 {
1471 PomTestWrapper pom = this.buildPom( "plugin-management-duplicate/sub" );
1472 assertEquals( 12, ( (List<?>) pom.getValue( "build/pluginManagement/plugins" ) ).size() );
1473 }
1474
1475 public void testDistributionManagement()
1476 throws Exception
1477 {
1478 PomTestWrapper pom = this.buildPom( "distribution-management" );
1479 assertEquals( "legacy", pom.getValue( "distributionManagement/repository/layout" ) );
1480 }
1481
1482 public void testDependencyScopeInheritance()
1483 throws Exception
1484 {
1485 PomTestWrapper pom = buildPom( "dependency-scope-inheritance/sub" );
1486 String scope = (String) pom.getValue( "dependencies[1]/scope" );
1487 assertEquals( "compile", scope );
1488 }
1489
1490 public void testDependencyScope()
1491 throws Exception
1492 {
1493 PomTestWrapper pom = buildPom( "dependency-scope/sub" );
1494 }
1495
1496
1497 public void testDependencyManagementWithInterpolation()
1498 throws Exception
1499 {
1500 PomTestWrapper pom = buildPom( "dependency-management-with-interpolation/sub" );
1501 }
1502
1503 public void testInterpolationWithSystemProperty()
1504 throws Exception
1505 {
1506 Properties sysProps = new Properties();
1507 sysProps.setProperty( "system.property", "PASSED" );
1508 PomTestWrapper pom = buildPom( "sytem-property-interpolation", sysProps );
1509 assertEquals( "PASSED", pom.getValue( "name" ) );
1510 }
1511
1512
1513 public void testPluginExecutionInheritanceWhenChildDoesNotDeclarePlugin()
1514 throws Exception
1515 {
1516 PomTestWrapper pom = buildPom( "plugin-exec-inheritance/wo-merge" );
1517 List<PluginExecution> executions =
1518 (List<PluginExecution>) pom.getValue( "build/pluginsAsMap[@name='org.apache.maven.its.plugins:maven-it-plugin-log-file']/executions" );
1519 assertEquals( 1, executions.size() );
1520 assertEquals( "inherited-execution", executions.get( 0 ).getId() );
1521 }
1522
1523 public void testPluginExecutionInheritanceWhenChildDoesDeclarePluginAsWell()
1524 throws Exception
1525 {
1526 PomTestWrapper pom = buildPom( "plugin-exec-inheritance/w-merge" );
1527 List<PluginExecution> executions =
1528 (List<PluginExecution>) pom.getValue( "build/pluginsAsMap[@name='org.apache.maven.its.plugins:maven-it-plugin-log-file']/executions" );
1529 assertEquals( 1, executions.size() );
1530 assertEquals( "inherited-execution", executions.get( 0 ).getId() );
1531 }
1532
1533
1534 public void testValidationErrorUponNonUniqueArtifactRepositoryId()
1535 throws Exception
1536 {
1537 try
1538 {
1539 buildPom( "unique-repo-id/artifact-repo" );
1540 fail( "Non-unique repository ids did not cause validation error" );
1541 }
1542 catch ( ProjectBuildingException e )
1543 {
1544
1545 }
1546 }
1547
1548
1549 public void testValidationErrorUponNonUniquePluginRepositoryId()
1550 throws Exception
1551 {
1552 try
1553 {
1554 buildPom( "unique-repo-id/plugin-repo" );
1555 fail( "Non-unique repository ids did not cause validation error" );
1556 }
1557 catch ( ProjectBuildingException e )
1558 {
1559
1560 }
1561 }
1562
1563
1564 public void testValidationErrorUponNonUniqueArtifactRepositoryIdInProfile()
1565 throws Exception
1566 {
1567 try
1568 {
1569 buildPom( "unique-repo-id/artifact-repo-in-profile" );
1570 fail( "Non-unique repository ids did not cause validation error" );
1571 }
1572 catch ( ProjectBuildingException e )
1573 {
1574
1575 }
1576 }
1577
1578
1579 public void testValidationErrorUponNonUniquePluginRepositoryIdInProfile()
1580 throws Exception
1581 {
1582 try
1583 {
1584 buildPom( "unique-repo-id/plugin-repo-in-profile" );
1585 fail( "Non-unique repository ids did not cause validation error" );
1586 }
1587 catch ( ProjectBuildingException e )
1588 {
1589
1590 }
1591 }
1592
1593
1594 public void testPrerequisitesAreNotInherited()
1595 throws Exception
1596 {
1597 PomTestWrapper pom = buildPom( "prerequisites-inheritance/child" );
1598 assertSame( null, pom.getValue( "prerequisites" ) );
1599 }
1600
1601 public void testLicensesAreInheritedButNotAggregated()
1602 throws Exception
1603 {
1604 PomTestWrapper pom = buildPom( "licenses-inheritance/child-2" );
1605 assertEquals( 1, ( (List<?>) pom.getValue( "licenses" ) ).size() );
1606 assertEquals( "child-license", pom.getValue( "licenses[1]/name" ) );
1607 assertEquals( "http://child.url/license", pom.getValue( "licenses[1]/url" ) );
1608 }
1609
1610 public void testDevelopersAreInheritedButNotAggregated()
1611 throws Exception
1612 {
1613 PomTestWrapper pom = buildPom( "developers-inheritance/child-2" );
1614 assertEquals( 1, ( (List<?>) pom.getValue( "developers" ) ).size() );
1615 assertEquals( "child-developer", pom.getValue( "developers[1]/name" ) );
1616 }
1617
1618 public void testContributorsAreInheritedButNotAggregated()
1619 throws Exception
1620 {
1621 PomTestWrapper pom = buildPom( "contributors-inheritance/child-2" );
1622 assertEquals( 1, ( (List<?>) pom.getValue( "contributors" ) ).size() );
1623 assertEquals( "child-contributor", pom.getValue( "contributors[1]/name" ) );
1624 }
1625
1626 public void testMailingListsAreInheritedButNotAggregated()
1627 throws Exception
1628 {
1629 PomTestWrapper pom = buildPom( "mailing-lists-inheritance/child-2" );
1630 assertEquals( 1, ( (List<?>) pom.getValue( "mailingLists" ) ).size() );
1631 assertEquals( "child-mailing-list", pom.getValue( "mailingLists[1]/name" ) );
1632 }
1633
1634 public void testPluginInheritanceOrder()
1635 throws Exception
1636 {
1637 PomTestWrapper pom = buildPom( "plugin-inheritance-order/child" );
1638
1639 assertEquals( "maven-it-plugin-log-file", pom.getValue( "build/plugins[1]/artifactId" ) );
1640 assertEquals( "maven-it-plugin-expression", pom.getValue( "build/plugins[2]/artifactId" ) );
1641 assertEquals( "maven-it-plugin-configuration", pom.getValue( "build/plugins[3]/artifactId" ) );
1642
1643 assertEquals( "maven-it-plugin-log-file", pom.getValue( "reporting/plugins[1]/artifactId" ) );
1644 assertEquals( "maven-it-plugin-expression", pom.getValue( "reporting/plugins[2]/artifactId" ) );
1645 assertEquals( "maven-it-plugin-configuration", pom.getValue( "reporting/plugins[3]/artifactId" ) );
1646 }
1647
1648 public void testCliPropsDominateProjectPropsDuringInterpolation()
1649 throws Exception
1650 {
1651 Properties props = new Properties();
1652 props.setProperty( "testProperty", "PASSED" );
1653 PomTestWrapper pom = buildPom( "interpolation-cli-wins", props );
1654
1655 assertEquals( "PASSED", pom.getValue( "properties/interpolatedProperty" ) );
1656 }
1657
1658 public void testParentPomPackagingMustBePom()
1659 throws Exception
1660 {
1661 try
1662 {
1663 buildPom( "parent-pom-packaging/sub" );
1664 fail( "Wrong packaging of parent POM was not rejected" );
1665 }
1666 catch ( ProjectBuildingException e )
1667 {
1668
1669 }
1670 }
1671
1672
1673 public void testManagedPluginConfigurationAppliesToImplicitPluginsIntroducedByPackaging()
1674 throws Exception
1675 {
1676 PomTestWrapper pom = buildPom( "plugin-management-for-implicit-plugin/child" );
1677 assertEquals( "passed.txt",
1678 pom.getValue( "build/plugins[@artifactId='maven-resources-plugin']/configuration/pathname" ) );
1679 assertEquals( "passed.txt",
1680 pom.getValue( "build/plugins[@artifactId='maven-it-plugin-log-file']/configuration/logFile" ) );
1681 }
1682
1683 public void testDefaultPluginsExecutionContributedByPackagingExecuteBeforeUserDefinedExecutions()
1684 throws Exception
1685 {
1686 PomTestWrapper pom = buildPom( "plugin-exec-order-and-default-exec" );
1687 List<PluginExecution> executions =
1688 (List<PluginExecution>) pom.getValue( "build/plugins[@artifactId='maven-resources-plugin']/executions" );
1689 assertNotNull( executions );
1690 assertEquals( 4, executions.size() );
1691 assertEquals( "default-resources", executions.get( 0 ).getId() );
1692 assertEquals( "default-testResources", executions.get( 1 ).getId() );
1693 assertEquals( "test-1", executions.get( 2 ).getId() );
1694 assertEquals( "test-2", executions.get( 3 ).getId() );
1695 }
1696
1697 public void testPluginDeclarationsRetainPomOrderAfterInjectionOfDefaultPlugins()
1698 throws Exception
1699 {
1700 PomTestWrapper pom = buildPom( "plugin-exec-order-with-lifecycle" );
1701 List<Plugin> plugins = (List<Plugin>) pom.getValue( "build/plugins" );
1702 int resourcesPlugin = -1;
1703 int customPlugin = -1;
1704 for ( int i = 0; i < plugins.size(); i++ )
1705 {
1706 Plugin plugin = plugins.get( i );
1707 if ( "maven-resources-plugin".equals( plugin.getArtifactId() ) )
1708 {
1709 assertTrue( resourcesPlugin < 0 );
1710 resourcesPlugin = i;
1711 }
1712 else if ( "maven-it-plugin-log-file".equals( plugin.getArtifactId() ) )
1713 {
1714 assertTrue( customPlugin < 0 );
1715 customPlugin = i;
1716 }
1717 }
1718 assertTrue( plugins.toString(), customPlugin == resourcesPlugin - 1 );
1719 }
1720
1721
1722 public void testPluginOrderAfterMergingWithInheritedPlugins()
1723 throws Exception
1724 {
1725 PomTestWrapper pom = buildPom( "plugin-inheritance-merge-order/sub" );
1726
1727 List<String> expected = new ArrayList<String>();
1728 expected.add( "maven-it-plugin-error" );
1729 expected.add( "maven-it-plugin-configuration" );
1730 expected.add( "maven-it-plugin-dependency-resolution" );
1731 expected.add( "maven-it-plugin-packaging" );
1732 expected.add( "maven-it-plugin-log-file" );
1733 expected.add( "maven-it-plugin-expression" );
1734 expected.add( "maven-it-plugin-fork" );
1735 expected.add( "maven-it-plugin-touch" );
1736
1737 List<String> actual = new ArrayList<String>();
1738 for ( Plugin plugin : (List<Plugin>) pom.getValue( "build/plugins" ) )
1739 {
1740 actual.add( plugin.getArtifactId() );
1741 }
1742
1743 actual.retainAll( expected );
1744
1745 assertEquals( actual, expected );
1746 }
1747
1748
1749 public void testPluginOrderAfterMergingWithInjectedPlugins()
1750 throws Exception
1751 {
1752 PomTestWrapper pom = buildPom( "plugin-injection-merge-order" );
1753
1754 List<String> expected = new ArrayList<String>();
1755 expected.add( "maven-it-plugin-error" );
1756 expected.add( "maven-it-plugin-configuration" );
1757 expected.add( "maven-it-plugin-dependency-resolution" );
1758 expected.add( "maven-it-plugin-packaging" );
1759 expected.add( "maven-it-plugin-log-file" );
1760 expected.add( "maven-it-plugin-expression" );
1761 expected.add( "maven-it-plugin-fork" );
1762 expected.add( "maven-it-plugin-touch" );
1763
1764 List<String> actual = new ArrayList<String>();
1765 for ( Plugin plugin : (List<Plugin>) pom.getValue( "build/plugins" ) )
1766 {
1767 actual.add( plugin.getArtifactId() );
1768 }
1769
1770 actual.retainAll( expected );
1771
1772 assertEquals( actual, expected );
1773 }
1774
1775 public void testProjectArtifactIdIsNotInheritedButMandatory()
1776 throws Exception
1777 {
1778 try
1779 {
1780 buildPom( "artifact-id-inheritance/child" );
1781 fail( "Missing artifactId did not cause validation error" );
1782 }
1783 catch ( ProjectBuildingException e )
1784 {
1785
1786 }
1787 }
1788
1789 private void assertPathSuffixEquals( String expected, Object actual )
1790 {
1791 String a = actual.toString();
1792 a = a.substring( a.length() - expected.length() ).replace( '\\', '/' );
1793 assertEquals( expected, a );
1794 }
1795
1796 private void assertPathWithNormalizedFileSeparators( Object value )
1797 {
1798 assertEquals( new File( value.toString() ).getPath(), value.toString() );
1799 }
1800
1801 private PomTestWrapper buildPom( String pomPath, String... profileIds )
1802 throws ProjectBuildingException
1803 {
1804 return buildPom( pomPath, null, profileIds );
1805 }
1806
1807 private PomTestWrapper buildPom( String pomPath, Properties executionProperties, String... profileIds )
1808 throws ProjectBuildingException
1809 {
1810 return buildPom( pomPath, false, executionProperties, profileIds );
1811 }
1812
1813 private PomTestWrapper buildPom( String pomPath, boolean lenientValidation, Properties executionProperties,
1814 String... profileIds )
1815 throws ProjectBuildingException
1816 {
1817 File pomFile = new File( testDirectory, pomPath );
1818 if ( pomFile.isDirectory() )
1819 {
1820 pomFile = new File( pomFile, "pom.xml" );
1821 }
1822
1823 ProjectBuildingRequest config = new DefaultProjectBuildingRequest();
1824
1825 String localRepoUrl =
1826 System.getProperty( "maven.repo.local", System.getProperty( "user.home" ) + "/.m2/repository" );
1827 localRepoUrl = "file://" + localRepoUrl;
1828 config.setLocalRepository( repositorySystem.createArtifactRepository( "local", localRepoUrl, new DefaultRepositoryLayout(), null, null ) );
1829 config.setActiveProfileIds( Arrays.asList( profileIds ) );
1830 config.setSystemProperties( executionProperties );
1831 config.setUserProperties( executionProperties );
1832 config.setValidationLevel( lenientValidation ? ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0
1833 : ModelBuildingRequest.VALIDATION_LEVEL_STRICT );
1834 MavenRepositorySystemSession repoSession = new MavenRepositorySystemSession();
1835 repoSession.setLocalRepositoryManager( new SimpleLocalRepositoryManager(
1836 new File(
1837 config.getLocalRepository().getBasedir() ) ) );
1838 config.setRepositorySession( repoSession );
1839
1840 return new PomTestWrapper( pomFile, projectBuilder.build( pomFile, config ).getProject() );
1841 }
1842
1843 protected void assertModelEquals( PomTestWrapper pom, Object expected, String expression )
1844 {
1845 assertEquals( expected, pom.getValue( expression ) );
1846 }
1847
1848 private static String createPath( List<String> elements )
1849 {
1850 StringBuilder buffer = new StringBuilder( 256 );
1851 for ( String s : elements )
1852 {
1853 buffer.append( s ).append( File.separator );
1854 }
1855 return buffer.toString().substring( 0, buffer.toString().length() - 1 );
1856 }
1857 }