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