001 package org.apache.maven.project;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 import java.io.File;
023 import java.util.ArrayList;
024 import java.util.Arrays;
025 import java.util.List;
026 import java.util.Map;
027 import java.util.Properties;
028
029 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
030 import org.apache.maven.model.Plugin;
031 import org.apache.maven.model.PluginExecution;
032 import org.apache.maven.model.building.ModelBuildingRequest;
033 import org.apache.maven.project.harness.PomTestWrapper;
034 import org.apache.maven.repository.RepositorySystem;
035 import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
036 import org.codehaus.plexus.ContainerConfiguration;
037 import org.codehaus.plexus.PlexusTestCase;
038 import org.eclipse.aether.DefaultRepositorySystemSession;
039 import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
040 import org.eclipse.aether.repository.LocalRepository;
041
042 public class PomConstructionTest
043 extends PlexusTestCase
044 {
045 private static String BASE_DIR = "src/test";
046
047 private static String BASE_POM_DIR = BASE_DIR + "/resources-project-builder";
048
049 private static String BASE_MIXIN_DIR = BASE_DIR + "/resources-mixins";
050
051 private DefaultProjectBuilder projectBuilder;
052
053 private RepositorySystem repositorySystem;
054
055 private File testDirectory;
056
057 @Override
058 protected void customizeContainerConfiguration( ContainerConfiguration containerConfiguration )
059 {
060 super.customizeContainerConfiguration( containerConfiguration );
061 containerConfiguration.setAutoWiring( true );
062 }
063
064 protected void setUp()
065 throws Exception
066 {
067 testDirectory = new File( getBasedir(), BASE_POM_DIR );
068 new File( getBasedir(), BASE_MIXIN_DIR );
069 projectBuilder = (DefaultProjectBuilder) lookup( ProjectBuilder.class );
070 repositorySystem = lookup( RepositorySystem.class );
071 }
072
073 @Override
074 protected void tearDown()
075 throws Exception
076 {
077 projectBuilder = null;
078
079 super.tearDown();
080 }
081
082 /**
083 * Will throw exception if url is empty. MNG-4050
084 *
085 * @throws Exception
086 */
087
088 public void testEmptyUrl()
089 throws Exception
090 {
091 buildPom( "empty-distMng-repo-url" );
092 }
093
094 /**
095 * Tests that modules is not overriden by profile
096 *
097 * @throws Exception
098 */
099 /* MNG-786*/
100 public void testProfileModules()
101 throws Exception
102 {
103 PomTestWrapper pom = buildPom( "profile-module", "a" );
104 assertEquals( "test-prop", pom.getValue( "properties[1]/b" ) );// verifies profile applied
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 * Will throw exception if doesn't find parent(s) in build
114 *
115 * @throws Exception
116 */
117 public void testParentInheritance()
118 throws Exception
119 {
120 buildPom( "parent-inheritance/sub" );
121 }
122
123 /*MNG-3995*/
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 /*MNG-3803*/
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 /*MNG-3900*/
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 // Some better conventions for the test poms needs to be created and each of these tests
150 // that represent a verification of a specification item needs to be a couple lines at most.
151 // The expressions help a lot, but we need a clean to pick up a directory of POMs, automatically load
152 // them into a resolver, create the expression to extract the data to validate the Model, and the URI
153 // to validate the properties. We also need a way to navigate from the Tex specification documents to
154 // the test in question and vice versa. A little Eclipse plugin would do the trick.
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 /*MNG-
163 public void testDependencyScope()
164 throws Exception
165 {
166 PomTestWrapper pom = buildPom( "dependency-scope/sub" );
167
168 }
169
170 /*MNG- 4010*/
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 /*MNG- 4008*/
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 /** MNG-4005: postponed to 3.1
189 public void testValidationErrorUponNonUniqueDependencyKey()
190 throws Exception
191 {
192 try
193 {
194 buildPom( "unique-dependency-key/deps" );
195 fail( "Non-unique dependency keys did not cause validation error" );
196 }
197 catch ( ProjectBuildingException e )
198 {
199 // expected
200 }
201 }
202
203 public void testValidationErrorUponNonUniqueDependencyManagementKey()
204 throws Exception
205 {
206 try
207 {
208 buildPom( "unique-dependency-key/dep-mngt" );
209 fail( "Non-unique dependency keys did not cause validation error" );
210 }
211 catch ( ProjectBuildingException e )
212 {
213 // expected
214 }
215 }
216
217 public void testValidationErrorUponNonUniqueDependencyKeyInProfile()
218 throws Exception
219 {
220 try
221 {
222 buildPom( "unique-dependency-key/deps-in-profile" );
223 fail( "Non-unique dependency keys did not cause validation error" );
224 }
225 catch ( ProjectBuildingException e )
226 {
227 // expected
228 }
229 }
230
231 public void testValidationErrorUponNonUniqueDependencyManagementKeyInProfile()
232 throws Exception
233 {
234 try
235 {
236 buildPom( "unique-dependency-key/dep-mngt-in-profile" );
237 fail( "Non-unique dependency keys did not cause validation error" );
238 }
239 catch ( ProjectBuildingException e )
240 {
241 // expected
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 /* MNG-3567*/
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 public void testMaven()
265 throws Exception
266 {
267 PomTestWrapper pom = buildPomFromMavenProject( "maven-build/sub/pom.xml", null );
268
269 for( String s: pom.getMavenProject().getTestClasspathElements() )
270 {
271 System.out.println( s );
272 }
273
274 }
275 */
276
277 /* MNG-3567*/
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 /* MNG-2174*/
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 /* MNG-3877*/
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 /** MNG-3821 */
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 /** MNG-3998 */
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 public void testPluginConfigDuplicate()
353 throws Exception
354 {
355 PomTestWrapper pom = buildPom( "plugin-config-duplicate/dup" );
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 /** MNG-3965 */
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 /** MNG-3985 */
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 /** MNG-3965 */
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 /** MNG-3997 */
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 /* MNG-3886*/
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 /* MNG-3887 */
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 /* MNG-3943*/
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 /* MNG-3925 */
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 /* MNG-3984*/
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 /* MNG-3937*/
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 /*MNG-3938*/
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 /* MNG-3938 */
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 /* MNG-3906*/
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 /* MNG-3846*/
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 /* MNG-3944*/
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 /* MNG-3979 */
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 /* MNG-3827*/
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 /* MNG-3864*/
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 /* MNG-3836*/
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 /* MNG-2591 */
835 public void testAppendOfInheritedPluginConfigurationWithNoProfile()
836 throws Exception
837 {
838 testAppendOfInheritedPluginConfiguration( "no-profile" );
839 }
840
841 /* MNG-2591*/
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 /* MNG-4000 */
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 /* MNG-4008 */
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 /** MNG-4027*/
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 /** IT-0021*/
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 /** MNG-4034 */
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 /** MNG-4040 */
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 /** MNG-3621 */
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 /** MNG-2006 */
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 /** MNG-0479 */
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 /** MNG-4053*/
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 /* MNG-4070 */
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 /* MNG-3760*/
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 /* MNG-3811*/
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 /* MNG-2309*/
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 /* MNG-4102*/
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 /* MNG-4102 */
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 /* MNG-3545 */
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 /* MNG-1995 */
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 /* MNG-3899 */
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 /*MNG-1957*/
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 /* MNG-2174 */
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 /** MNG-4116 */
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 //This will fail on a validation error if incorrect
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 /* MNG-4129 */
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 /* MNG-4193 */
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 // expected
1558 }
1559 }
1560
1561 /* MNG-4193 */
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 // expected
1573 }
1574 }
1575
1576 /* MNG-4193 */
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 // expected
1588 }
1589 }
1590
1591 /* MNG-4193 */
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 // expected
1603 }
1604 }
1605
1606 /** MNG-3843 */
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 // expected
1682 }
1683 }
1684
1685 /** MNG-522, MNG-3018 */
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 /** MNG-4415 */
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 /** MNG-4416 */
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 // expected
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 }