1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.shared.release.phase;
20
21 import java.io.IOException;
22 import java.util.ArrayList;
23 import java.util.Collections;
24 import java.util.List;
25
26 import org.apache.maven.project.MavenProject;
27 import org.apache.maven.scm.manager.NoSuchScmProviderException;
28 import org.apache.maven.scm.provider.ScmProvider;
29 import org.apache.maven.scm.repository.ScmRepositoryException;
30 import org.apache.maven.shared.release.ReleaseExecutionException;
31 import org.apache.maven.shared.release.ReleaseFailureException;
32 import org.apache.maven.shared.release.config.ReleaseDescriptorBuilder;
33 import org.apache.maven.shared.release.config.ReleaseUtils;
34 import org.apache.maven.shared.release.env.DefaultReleaseEnvironment;
35 import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
36 import org.apache.maven.shared.release.transform.jdom2.JDomModelETLFactory;
37 import org.apache.maven.shared.release.util.ReleaseUtil;
38 import org.junit.jupiter.api.BeforeEach;
39 import org.junit.jupiter.api.Disabled;
40 import org.junit.jupiter.api.Test;
41
42 import static org.junit.jupiter.api.Assertions.assertEquals;
43 import static org.junit.jupiter.api.Assertions.assertNull;
44 import static org.junit.jupiter.api.Assertions.assertTrue;
45 import static org.junit.jupiter.api.Assertions.fail;
46 import static org.mockito.Mockito.mock;
47 import static org.mockito.Mockito.verifyNoMoreInteractions;
48
49
50
51
52
53
54 abstract class AbstractRewritingReleasePhaseTestCase extends AbstractReleaseTestCase {
55
56 protected abstract ReleasePhase getTestedPhase();
57
58 @BeforeEach
59 public void setUpAbstractRewritingReleasePhaseTestCase() throws Exception {
60 if (getTestedPhase() instanceof AbstractRewritePomsPhase) {
61 ((AbstractRewritePomsPhase) getTestedPhase()).setModelETL(JDomModelETLFactory.NAME);
62 ((AbstractRewritePomsPhase) getTestedPhase()).setStartTime(0);
63 }
64 }
65
66 @Test
67 public void testRewriteBasicPom() throws Exception {
68 List<MavenProject> reactorProjects = createReactorProjects("basic-pom");
69 ReleaseDescriptorBuilder builder = createDescriptorFromBasicPom(reactorProjects, "basic-pom");
70 mapNextVersion(builder, "groupId:artifactId");
71
72 getTestedPhase()
73 .execute(
74 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
75
76 comparePomFiles(reactorProjects);
77 }
78
79 @Test
80 public void testRewriteBasicPomEntities() throws Exception {
81 List<MavenProject> reactorProjects = createReactorProjects("basic-pom-entities");
82 ReleaseDescriptorBuilder builder = createDescriptorFromBasicPom(reactorProjects, "basic-pom-entities");
83 mapNextVersion(builder, "groupId:artifactId");
84
85 getTestedPhase()
86 .execute(
87 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
88
89 comparePomFiles(reactorProjects);
90 }
91
92 @Test
93 public void testRewriteBasicPomNamespace() throws Exception {
94 List<MavenProject> reactorProjects = createReactorProjects("basic-pom-namespace");
95 ReleaseDescriptorBuilder builder = createDescriptorFromBasicPom(reactorProjects, "basic-pom-namespace");
96 mapNextVersion(builder, "groupId:artifactId");
97
98 getTestedPhase()
99 .execute(
100 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
101
102 comparePomFiles(reactorProjects);
103 }
104
105 @Test
106 public void testRewriteBasicPomWithEncoding() throws Exception {
107 List<MavenProject> reactorProjects = createReactorProjects("basic-pom-with-encoding");
108 ReleaseDescriptorBuilder builder = createDescriptorFromBasicPom(reactorProjects, "basic-pom-with-encoding");
109 mapNextVersion(builder, "groupId:artifactId");
110
111 getTestedPhase()
112 .execute(
113 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
114
115 comparePomFiles(reactorProjects);
116 }
117
118 @Test
119 public void testRewritePomWithParent() throws Exception {
120 List<MavenProject> reactorProjects = createReactorProjects("pom-with-parent");
121 ReleaseDescriptorBuilder builder =
122 createConfigurationForPomWithParentAlternateNextVersion(reactorProjects, "pom-with-parent");
123
124 getTestedPhase()
125 .execute(
126 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
127
128 comparePomFiles(reactorProjects);
129 }
130
131 @Test
132 public void testRewritePomWithUnmappedParent() throws Exception {
133
134 List<MavenProject> reactorProjects = createReactorProjects("pom-with-parent");
135 ReleaseDescriptorBuilder builder = createDescriptorFromProjects(reactorProjects, "pom-with-parent");
136
137
138 reactorProjects = new ArrayList<>(reactorProjects);
139 Collections.reverse(reactorProjects);
140
141 mapAlternateNextVersion(builder, "groupId:subproject1");
142
143 try {
144 getTestedPhase()
145 .execute(
146 ReleaseUtils.buildReleaseDescriptor(builder),
147 new DefaultReleaseEnvironment(),
148 reactorProjects);
149
150 fail("Should have thrown an exception");
151 } catch (ReleaseFailureException e) {
152 assertTrue(true);
153 }
154 }
155
156 @Test
157 public void testRewritePomWithReleasedParent() throws Exception {
158
159 List<MavenProject> reactorProjects = createReactorProjects("pom-with-released-parent");
160 ReleaseDescriptorBuilder builder = createDescriptorFromProjects(reactorProjects, "pom-with-released-parent");
161
162 mapAlternateNextVersion(builder, "groupId:subproject1");
163 builder.addReleaseVersion("groupId:artifactId", "1");
164 builder.addDevelopmentVersion("groupId:artifactId", "1");
165
166 getTestedPhase()
167 .execute(
168 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
169
170 comparePomFiles(reactorProjects);
171 }
172
173 protected abstract void mapAlternateNextVersion(ReleaseDescriptorBuilder config, String projectId);
174
175 @Test
176 public void testRewritePomWithInheritedVersion() throws Exception {
177 List<MavenProject> reactorProjects = createReactorProjects("pom-with-inherited-version");
178 ReleaseDescriptorBuilder builder =
179 createConfigurationForWithParentNextVersion(reactorProjects, "pom-with-inherited-version");
180
181 getTestedPhase()
182 .execute(
183 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
184
185 comparePomFiles(reactorProjects);
186 }
187
188 @Test
189 public void testRewritePomWithChangedInheritedVersion() throws Exception {
190 List<MavenProject> reactorProjects = createReactorProjects("pom-with-inherited-version");
191 ReleaseDescriptorBuilder builder =
192 createConfigurationForPomWithParentAlternateNextVersion(reactorProjects, "pom-with-inherited-version");
193
194 getTestedPhase()
195 .execute(
196 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
197
198 MavenProject project = getProjectsAsMap(reactorProjects).get("groupId:subproject1");
199 comparePomFiles(project, "-version-changed");
200 }
201
202 protected abstract ReleaseDescriptorBuilder createConfigurationForPomWithParentAlternateNextVersion(
203 List<MavenProject> reactorProjects, String workingDirectory) throws Exception;
204
205 @Test
206 public void testRewritePomDependencies() throws Exception {
207 List<MavenProject> reactorProjects = createReactorProjects("internal-snapshot-dependencies");
208 ReleaseDescriptorBuilder builder =
209 createDefaultConfiguration(reactorProjects, "internal-snapshot-dependencies");
210 mapNextVersion(builder, "groupId:subsubproject");
211
212 getTestedPhase()
213 .execute(
214 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
215
216 comparePomFiles(reactorProjects);
217 }
218
219 @Test
220 public void testRewritePomUnmappedDependencies() throws Exception {
221 List<MavenProject> reactorProjects = createReactorProjects("internal-snapshot-dependencies");
222 ReleaseDescriptorBuilder builder =
223 createUnmappedConfiguration(reactorProjects, "internal-snapshot-dependencies");
224
225 try {
226 getTestedPhase()
227 .execute(
228 ReleaseUtils.buildReleaseDescriptor(builder),
229 new DefaultReleaseEnvironment(),
230 reactorProjects);
231
232 fail("Should have thrown an exception");
233 } catch (ReleaseFailureException e) {
234 assertTrue(true);
235 }
236 }
237
238 @Test
239 public void testRewritePomDependenciesDifferentVersion() throws Exception {
240 List<MavenProject> reactorProjects = createReactorProjects("internal-differing-snapshot-dependencies");
241 ReleaseDescriptorBuilder builder =
242 createDifferingVersionConfiguration(reactorProjects, "internal-differing-snapshot-dependencies");
243
244 getTestedPhase()
245 .execute(
246 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
247
248 comparePomFiles(reactorProjects);
249 }
250
251 @Test
252 public void testRewriteManagedPomDependencies() throws Exception {
253 List<MavenProject> reactorProjects = createReactorProjects("internal-managed-snapshot-dependency");
254 ReleaseDescriptorBuilder builder =
255 createMappedConfiguration(reactorProjects, "internal-managed-snapshot-dependency");
256
257 getTestedPhase()
258 .execute(
259 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
260
261 comparePomFiles(reactorProjects);
262 }
263
264 @Test
265 public void testRewriteManagedPomUnmappedDependencies() throws Exception {
266 List<MavenProject> reactorProjects = createReactorProjects("internal-managed-snapshot-dependency");
267 ReleaseDescriptorBuilder builder =
268 createUnmappedConfiguration(reactorProjects, "internal-managed-snapshot-dependency");
269
270 try {
271 getTestedPhase()
272 .execute(
273 ReleaseUtils.buildReleaseDescriptor(builder),
274 new DefaultReleaseEnvironment(),
275 reactorProjects);
276
277 fail("Should have thrown an exception");
278 } catch (ReleaseFailureException e) {
279 assertTrue(true);
280 }
281 }
282
283 @Test
284 public void testRewritePomPlugins() throws Exception {
285 List<MavenProject> reactorProjects = createReactorProjects("internal-snapshot-plugins");
286 ReleaseDescriptorBuilder builder = createDefaultConfiguration(reactorProjects, "internal-snapshot-plugins");
287
288 getTestedPhase()
289 .execute(
290 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
291
292 comparePomFiles(reactorProjects);
293 }
294
295 @Test
296 public void testRewritePomUnmappedPlugins() throws Exception {
297 List<MavenProject> reactorProjects = createReactorProjects("internal-snapshot-plugins");
298 ReleaseDescriptorBuilder builder = createUnmappedConfiguration(reactorProjects, "internal-snapshot-plugins");
299
300 try {
301 getTestedPhase()
302 .execute(
303 ReleaseUtils.buildReleaseDescriptor(builder),
304 new DefaultReleaseEnvironment(),
305 reactorProjects);
306
307 fail("Should have thrown an exception");
308 } catch (ReleaseFailureException e) {
309 assertTrue(true);
310 }
311 }
312
313 @Test
314 public void testRewritePomPluginsDifferentVersion() throws Exception {
315 List<MavenProject> reactorProjects = createReactorProjects("internal-differing-snapshot-plugins");
316 ReleaseDescriptorBuilder builder =
317 createDifferingVersionConfiguration(reactorProjects, "internal-differing-snapshot-plugins");
318
319 getTestedPhase()
320 .execute(
321 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
322
323 comparePomFiles(reactorProjects);
324 }
325
326 @Test
327 public void testRewriteManagedPomPlugins() throws Exception {
328 List<MavenProject> reactorProjects = createReactorProjects("internal-managed-snapshot-plugin");
329 ReleaseDescriptorBuilder builder =
330 createMappedConfiguration(reactorProjects, "internal-managed-snapshot-plugin");
331
332 getTestedPhase()
333 .execute(
334 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
335
336 comparePomFiles(reactorProjects);
337 }
338
339 @Test
340 public void testRewriteManagedPomUnmappedPlugins() throws Exception {
341 List<MavenProject> reactorProjects = createReactorProjects("internal-managed-snapshot-plugin");
342 ReleaseDescriptorBuilder builder =
343 createUnmappedConfiguration(reactorProjects, "internal-managed-snapshot-plugin");
344
345 try {
346 getTestedPhase()
347 .execute(
348 ReleaseUtils.buildReleaseDescriptor(builder),
349 new DefaultReleaseEnvironment(),
350 reactorProjects);
351
352 fail("Should have thrown an exception");
353 } catch (ReleaseFailureException e) {
354 assertTrue(true);
355 }
356 }
357
358 @Test
359 public void testRewritePomReportPlugins() throws Exception {
360 List<MavenProject> reactorProjects = createReactorProjects("internal-snapshot-report-plugins");
361 ReleaseDescriptorBuilder builder =
362 createDefaultConfiguration(reactorProjects, "internal-snapshot-report-plugins");
363
364 getTestedPhase()
365 .execute(
366 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
367
368 comparePomFiles(reactorProjects);
369 }
370
371 @Test
372 public void testRewritePomUnmappedReportPlugins() throws Exception {
373 List<MavenProject> reactorProjects = createReactorProjects("internal-snapshot-report-plugins");
374 ReleaseDescriptorBuilder builder =
375 createUnmappedConfiguration(reactorProjects, "internal-snapshot-report-plugins");
376
377 try {
378 getTestedPhase()
379 .execute(
380 ReleaseUtils.buildReleaseDescriptor(builder),
381 new DefaultReleaseEnvironment(),
382 reactorProjects);
383
384 fail("Should have thrown an exception");
385 } catch (ReleaseFailureException e) {
386 assertTrue(true);
387 }
388 }
389
390 @Test
391 public void testRewritePomReportPluginsDifferentVersion() throws Exception {
392 List<MavenProject> reactorProjects = createReactorProjects("internal-differing-snapshot-report-plugins");
393 ReleaseDescriptorBuilder builder =
394 createDifferingVersionConfiguration(reactorProjects, "internal-differing-snapshot-report-plugins");
395
396 getTestedPhase()
397 .execute(
398 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
399
400 comparePomFiles(reactorProjects);
401 }
402
403 @Test
404 @Disabled("Extensions being part of reactor is not supported anymore")
405 public void testRewritePomExtension() throws Exception {
406 List<MavenProject> reactorProjects = createReactorProjects("internal-snapshot-extension");
407 ReleaseDescriptorBuilder builder = createDefaultConfiguration(reactorProjects, "internal-snapshot-extension");
408
409 getTestedPhase()
410 .execute(
411 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
412
413 comparePomFiles(reactorProjects);
414 }
415
416 @Test
417 @Disabled("Extensions being part of reactor is not supported anymore")
418 public void testRewritePomUnmappedExtension() throws Exception {
419 List<MavenProject> reactorProjects = createReactorProjects("internal-snapshot-extension");
420 ReleaseDescriptorBuilder builder = createUnmappedConfiguration(reactorProjects, "internal-snapshot-extension");
421
422 try {
423 getTestedPhase()
424 .execute(
425 ReleaseUtils.buildReleaseDescriptor(builder),
426 new DefaultReleaseEnvironment(),
427 reactorProjects);
428
429 fail("Should have thrown an exception");
430 } catch (ReleaseFailureException e) {
431 assertTrue(true);
432 }
433 }
434
435 @Test
436 @Disabled("Extensions being part of reactor is not supported anymore")
437 public void testRewritePomExtensionDifferentVersion() throws Exception {
438 List<MavenProject> reactorProjects = createReactorProjects("internal-differing-snapshot-extension");
439 ReleaseDescriptorBuilder builder =
440 createDifferingVersionConfiguration(reactorProjects, "internal-differing-snapshot-extension");
441
442 getTestedPhase()
443 .execute(
444 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
445
446 comparePomFiles(reactorProjects);
447 }
448
449 @Test
450 @Disabled("Extensions being part of reactor is not supported anymore")
451 public void testRewritePomExtensionUndefinedVersion() throws Exception {
452 List<MavenProject> reactorProjects = createReactorProjects("pom-without-extension-version");
453 ReleaseDescriptorBuilder builder = createDefaultConfiguration(reactorProjects, "pom-without-extension-version");
454
455 getTestedPhase()
456 .execute(
457 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
458
459 comparePomFiles(reactorProjects);
460 }
461
462 @Test
463 public void testRewriteAddSchema() throws Exception {
464 boolean copyFiles = true;
465
466
467 for (int i = 0; i < 2; i++) {
468 String path = "basic-pom";
469 List<MavenProject> reactorProjects = prepareReactorProjects(path);
470 ReleaseDescriptorBuilder builder = createDescriptorFromBasicPom(reactorProjects, "basic-pom");
471 mapNextVersion(builder, "groupId:artifactId");
472 builder.setAddSchema(true);
473
474 getTestedPhase()
475 .execute(
476 ReleaseUtils.buildReleaseDescriptor(builder),
477 new DefaultReleaseEnvironment(),
478 reactorProjects);
479
480 comparePomFiles(reactorProjects, "-with-schema");
481
482 copyFiles = false;
483
484 verifyReactorProjects(path, copyFiles);
485 }
486 }
487
488 @Test
489 public void testSimulateRewriteEditModeSkipped() throws Exception {
490
491 List<MavenProject> reactorProjects = createReactorProjects("basic-pom");
492 ReleaseDescriptorBuilder builder = createDescriptorFromBasicPom(reactorProjects, "basic-pom");
493 builder.setScmUseEditMode(true);
494 mapNextVersion(builder, "groupId:artifactId");
495
496 ScmProvider scmProviderMock = mock(ScmProvider.class);
497 scmManager.setScmProvider(scmProviderMock);
498
499
500 getTestedPhase()
501 .simulate(
502 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
503
504
505 verifyNoMoreInteractions(scmProviderMock);
506 }
507
508 @Test
509 public void testRewriteUnmappedPom() throws Exception {
510 List<MavenProject> reactorProjects = createReactorProjects("basic-pom");
511 ReleaseDescriptorBuilder builder = createDescriptorFromBasicPom(reactorProjects, "basic-pom");
512
513 try {
514 getTestedPhase()
515 .execute(
516 ReleaseUtils.buildReleaseDescriptor(builder),
517 new DefaultReleaseEnvironment(),
518 reactorProjects);
519
520 fail("Should have thrown an exception");
521 } catch (ReleaseFailureException e) {
522 assertTrue(true);
523 }
524 }
525
526 @Test
527 public void testRewriteBasicPomWithScmRepoException() throws Exception {
528
529 List<MavenProject> reactorProjects = createReactorProjects("basic-pom");
530 ReleaseDescriptorBuilder builder = createDescriptorFromBasicPom(reactorProjects, "basic-pom");
531 builder.setScmUseEditMode(true);
532 builder.setScmSourceUrl("scm:svn:fail");
533 mapNextVersion(builder, "groupId:artifactId");
534
535 scmManager.setException(new ScmRepositoryException("..."));
536
537 try {
538 getTestedPhase()
539 .execute(
540 ReleaseUtils.buildReleaseDescriptor(builder),
541 new DefaultReleaseEnvironment(),
542 reactorProjects);
543
544 fail("Should have thrown an exception");
545 } catch (ReleaseScmRepositoryException e) {
546 assertNull(e.getCause(), "Check no additional cause");
547 }
548 }
549
550 @Test
551 public void testRewriteBasicPomWithNoSuchProviderException() throws Exception {
552
553 List<MavenProject> reactorProjects = createReactorProjects("basic-pom");
554 ReleaseDescriptorBuilder builder = createDescriptorFromBasicPom(reactorProjects, "basic-pom");
555 builder.setScmUseEditMode(true);
556 builder.setScmSourceUrl("scm:fail:path");
557 mapNextVersion(builder, "groupId:artifactId");
558
559 scmManager.setException(new NoSuchScmProviderException("..."));
560
561
562 try {
563 getTestedPhase()
564 .execute(
565 ReleaseUtils.buildReleaseDescriptor(builder),
566 new DefaultReleaseEnvironment(),
567 reactorProjects);
568
569 fail("Should have thrown an exception");
570 } catch (ReleaseExecutionException e) {
571
572 assertEquals(NoSuchScmProviderException.class, e.getCause().getClass(), "Check cause");
573 }
574 }
575
576 @Test
577 public void testRewriteWhitespaceAroundValues() throws Exception {
578 List<MavenProject> reactorProjects = createReactorProjects("whitespace-around-values");
579 ReleaseDescriptorBuilder builder =
580 createConfigurationForPomWithParentAlternateNextVersion(reactorProjects, "whitespace-around-values");
581 mapNextVersion(builder, "groupId:subproject2");
582
583 getTestedPhase()
584 .execute(
585 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
586
587 comparePomFiles(reactorProjects);
588 }
589
590 @Test
591 public void testRewriteCommentsAroundValues() throws Exception {
592 List<MavenProject> reactorProjects = createReactorProjects("comments-around-values");
593 ReleaseDescriptorBuilder builder =
594 createConfigurationForPomWithParentAlternateNextVersion(reactorProjects, "comments-around-values");
595 mapNextVersion(builder, "groupId:subproject2");
596
597 getTestedPhase()
598 .execute(
599 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
600
601 comparePomFiles(reactorProjects);
602 }
603
604 @Test
605 public void testRewriteCDataAroundValues() throws Exception {
606 List<MavenProject> reactorProjects = createReactorProjects("cdata-around-values");
607 ReleaseDescriptorBuilder builder =
608 createConfigurationForPomWithParentAlternateNextVersion(reactorProjects, "cdata-around-values");
609 mapNextVersion(builder, "groupId:subproject2");
610
611 getTestedPhase()
612 .execute(
613 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
614
615 comparePomFiles(reactorProjects);
616 }
617
618 @Test
619 public void testCleanNoProjects() {
620
621 ((ResourceGenerator) getTestedPhase()).clean(Collections.emptyList());
622 }
623
624 protected ReleaseDescriptorBuilder createUnmappedConfiguration(
625 List<MavenProject> reactorProjects, String workingDirectory) throws Exception {
626 ReleaseDescriptorBuilder builder = createDescriptorFromProjects(reactorProjects, workingDirectory);
627
628 unmapNextVersion(builder, "groupId:subproject1");
629 mapNextVersion(builder, "groupId:subproject2");
630 mapNextVersion(builder, "groupId:subproject3");
631 mapNextVersion(builder, "groupId:artifactId");
632 return builder;
633 }
634
635 protected List<MavenProject> createReactorProjects(String path) throws Exception {
636 return prepareReactorProjects(path);
637 }
638
639 protected ReleaseDescriptorBuilder createDefaultConfiguration(
640 List<MavenProject> reactorProjects, String workingDirectory) throws Exception {
641 ReleaseDescriptorBuilder builder = createMappedConfiguration(reactorProjects, workingDirectory);
642
643 mapNextVersion(builder, "groupId:subproject4");
644 return builder;
645 }
646
647 protected ReleaseDescriptorBuilder createMappedConfiguration(
648 List<MavenProject> reactorProjects, String workingDirectory) throws Exception {
649 ReleaseDescriptorBuilder builder = createDifferingVersionConfiguration(reactorProjects, workingDirectory);
650
651 mapNextVersion(builder, "groupId:subproject3");
652 return builder;
653 }
654
655 private ReleaseDescriptorBuilder createDifferingVersionConfiguration(
656 List<MavenProject> reactorProjects, String workingDirectory) throws Exception {
657 ReleaseDescriptorBuilder builder =
658 createConfigurationForWithParentNextVersion(reactorProjects, workingDirectory);
659
660 mapNextVersion(builder, "groupId:subproject2");
661 return builder;
662 }
663
664 protected abstract ReleaseDescriptorBuilder createConfigurationForWithParentNextVersion(
665 List<MavenProject> reactorProjects, String workingDirectory) throws Exception;
666
667 protected abstract void unmapNextVersion(ReleaseDescriptorBuilder config, String projectId);
668
669 protected abstract void mapNextVersion(ReleaseDescriptorBuilder config, String projectId);
670
671 protected ReleaseDescriptorBuilder createDescriptorFromBasicPom(
672 List<MavenProject> reactorProjects, String workingDirectory) throws Exception {
673 return createDescriptorFromProjects(reactorProjects, workingDirectory);
674 }
675
676 protected abstract String readTestProjectFile(String fileName) throws IOException;
677
678 @Test
679 public void testRewritePomDependenciesWithNamespace() throws Exception {
680 List<MavenProject> reactorProjects = createReactorProjects("pom-with-namespace");
681 ReleaseDescriptorBuilder builder = createDefaultConfiguration(reactorProjects, "pom-with-namespace");
682
683 getTestedPhase()
684 .execute(
685 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
686
687 comparePomFiles(reactorProjects);
688 }
689
690 protected abstract List<MavenProject> prepareReactorProjects(String path) throws Exception;
691
692 protected void verifyReactorProjects(String path, boolean copyFiles) throws Exception {}
693
694 protected ReleaseDescriptorBuilder createDescriptorFromProjects(
695 List<MavenProject> reactorProjects, String workingDirectory) {
696 ReleaseDescriptorBuilder builder =
697 createDescriptorFromProjects(new ReleaseDescriptorBuilder(), reactorProjects);
698 builder.setWorkingDirectory(getWorkingDirectory(workingDirectory).toString());
699 return builder;
700 }
701
702 private ReleaseDescriptorBuilder createDescriptorFromProjects(
703 ReleaseDescriptorBuilder builder, List<MavenProject> reactorProjects) {
704 MavenProject rootProject = ReleaseUtil.getRootProject(reactorProjects);
705
706 for (MavenProject project : reactorProjects) {
707 String key = project.getGroupId() + ':' + project.getArtifactId();
708 builder.putOriginalVersion(key, project.getVersion());
709 builder.addOriginalScmInfo(key, project.getScm());
710 }
711
712 if (rootProject.getScm() == null) {
713 builder.setScmSourceUrl("scm:svn:file://localhost/tmp/scm-repo/trunk");
714 } else {
715 builder.setScmSourceUrl(rootProject.getScm().getConnection());
716 }
717
718 return builder;
719 }
720 }