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.util.List;
22
23 import org.apache.maven.project.MavenProject;
24 import org.apache.maven.scm.ScmException;
25 import org.apache.maven.scm.ScmFileSet;
26 import org.apache.maven.scm.command.edit.EditScmResult;
27 import org.apache.maven.scm.provider.ScmProvider;
28 import org.apache.maven.scm.provider.ScmProviderStub;
29 import org.apache.maven.scm.repository.ScmRepository;
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.ReleaseScmCommandException;
36 import org.junit.jupiter.api.Test;
37
38 import static org.junit.jupiter.api.Assertions.assertEquals;
39 import static org.junit.jupiter.api.Assertions.assertNull;
40 import static org.junit.jupiter.api.Assertions.assertTrue;
41 import static org.junit.jupiter.api.Assertions.fail;
42 import static org.mockito.ArgumentMatchers.isA;
43 import static org.mockito.Mockito.mock;
44 import static org.mockito.Mockito.verify;
45 import static org.mockito.Mockito.verifyNoMoreInteractions;
46 import static org.mockito.Mockito.when;
47
48
49
50
51
52
53 abstract class AbstractEditModeRewritingReleasePhaseTestCase extends AbstractRewritingReleasePhaseTestCase {
54
55 @Test
56 void testRewriteBasicPomWithEditMode() throws Exception {
57 List<MavenProject> reactorProjects = createReactorProjects("basic-pom");
58 ReleaseDescriptorBuilder builder = createDescriptorFromBasicPom(reactorProjects, "basic-pom");
59 builder.setScmUseEditMode(true);
60 mapNextVersion(builder, "groupId:artifactId");
61
62 getTestedPhase()
63 .execute(
64 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
65
66 comparePomFiles(reactorProjects);
67 }
68
69 @Test
70 void testRewriteBasicPomWithEditModeFailure() throws Exception {
71 List<MavenProject> reactorProjects = createReactorProjects("basic-pom");
72 ReleaseDescriptorBuilder builder = createDescriptorFromProjects(reactorProjects, "basic-pom");
73 builder.setScmUseEditMode(true);
74 mapNextVersion(builder, "groupId:artifactId");
75
76 ScmProviderStub providerStub = (ScmProviderStub) scmManager.getProviderByUrl(
77 ReleaseUtils.buildReleaseDescriptor(builder).getScmSourceUrl());
78 providerStub.setEditScmResult(new EditScmResult("", "", "", false));
79
80 try {
81 getTestedPhase()
82 .execute(
83 ReleaseUtils.buildReleaseDescriptor(builder),
84 new DefaultReleaseEnvironment(),
85 reactorProjects);
86
87 fail("Should have thrown an exception");
88 } catch (ReleaseScmCommandException e) {
89 assertNull(e.getCause(), "Check no other cause");
90 }
91 }
92
93 @Test
94 void testRewriteBasicPomWithEditModeException() throws Exception {
95
96 List<MavenProject> reactorProjects = createReactorProjects("basic-pom");
97 ReleaseDescriptorBuilder builder = createDescriptorFromProjects(reactorProjects, "basic-pom");
98 builder.setScmUseEditMode(true);
99 mapNextVersion(builder, "groupId:artifactId");
100
101 ScmProvider scmProviderMock = mock(ScmProvider.class);
102 when(scmProviderMock.edit(isA(ScmRepository.class), isA(ScmFileSet.class)))
103 .thenThrow(new ScmException("..."));
104
105 scmManager.setScmProvider(scmProviderMock);
106
107
108 try {
109 getTestedPhase()
110 .execute(
111 ReleaseUtils.buildReleaseDescriptor(builder),
112 new DefaultReleaseEnvironment(),
113 reactorProjects);
114
115 fail("Should have thrown an exception");
116 } catch (ReleaseExecutionException e) {
117 assertEquals(ScmException.class, e.getCause().getClass(), "Check cause");
118 }
119
120 verify(scmProviderMock).edit(isA(ScmRepository.class), isA(ScmFileSet.class));
121 verifyNoMoreInteractions(scmProviderMock);
122 }
123
124 @Test
125 void testRewritePomPluginDependencies() throws Exception {
126 List<MavenProject> reactorProjects = createReactorProjects("internal-snapshot-plugin-deps");
127 ReleaseDescriptorBuilder builder = createDefaultConfiguration(reactorProjects, "internal-snapshot-plugin-deps");
128
129 getTestedPhase()
130 .execute(
131 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
132
133 comparePomFiles(reactorProjects);
134 }
135
136 @Test
137 void testRewritePomUnmappedPluginDependencies() throws Exception {
138 List<MavenProject> reactorProjects = createReactorProjects("internal-snapshot-plugin-deps");
139 ReleaseDescriptorBuilder builder =
140 createUnmappedConfiguration(reactorProjects, "internal-snapshot-plugin-deps");
141
142 try {
143 getTestedPhase()
144 .execute(
145 ReleaseUtils.buildReleaseDescriptor(builder),
146 new DefaultReleaseEnvironment(),
147 reactorProjects);
148
149 fail("Should have thrown an exception");
150 } catch (ReleaseFailureException e) {
151 assertTrue(true);
152 }
153 }
154
155 @Test
156 void testRewritePomProfile() throws Exception {
157 List<MavenProject> reactorProjects = createReactorProjects("internal-snapshot-profile");
158 ReleaseDescriptorBuilder builder = createDefaultConfiguration(reactorProjects, "internal-snapshot-profile");
159
160 getTestedPhase()
161 .execute(
162 ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
163
164 comparePomFiles(reactorProjects);
165 }
166
167 @Test
168 void testRewritePomUnmappedProfile() throws Exception {
169 List<MavenProject> reactorProjects = createReactorProjects("internal-snapshot-profile");
170 ReleaseDescriptorBuilder builder = createUnmappedConfiguration(reactorProjects, "internal-snapshot-profile");
171
172 try {
173 getTestedPhase()
174 .execute(
175 ReleaseUtils.buildReleaseDescriptor(builder),
176 new DefaultReleaseEnvironment(),
177 reactorProjects);
178
179 fail("Should have thrown an exception");
180 } catch (ReleaseFailureException e) {
181 assertTrue(true);
182 }
183 }
184 }