Skip to content

Commit 2661d63

Browse files
committed
Add tests for -DpushChanges
1 parent 02e6d10 commit 2661d63

2 files changed

Lines changed: 76 additions & 0 deletions

File tree

maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,71 @@ void testPrepareSimulateNoCompletedPhase() throws Exception {
234234
assertFalse(((ReleasePhaseStub) phaseStep3).isExecuted(), "step3 not executed");
235235
}
236236

237+
@Test
238+
void testPrepareOverridesConfiguredPushChangesFromUserProperties() throws Exception {
239+
// pushChanges=false as if configured in the POM <configuration> (where it wins over -DpushChanges)
240+
ReleaseDescriptorBuilder builder = configStore.getReleaseConfiguration();
241+
builder.setCompletedPhase(null);
242+
builder.setPushChanges(false);
243+
244+
// pushChanges=true as if passed on the command line with -DpushChanges
245+
Properties userProperties = new Properties();
246+
userProperties.setProperty("pushChanges", "true");
247+
248+
ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
249+
prepareRequest.setReleaseDescriptorBuilder(builder);
250+
prepareRequest.setReleaseEnvironment(new DefaultReleaseEnvironment());
251+
prepareRequest.setResume(false);
252+
prepareRequest.setUserProperties(userProperties);
253+
254+
releaseManagerTest.prepare(prepareRequest);
255+
256+
assertTrue(
257+
((ReleasePhaseStub) phaseStep1).getReleaseDescriptor().isPushChanges(),
258+
"command-line pushChanges=true should override POM-configured pushChanges=false");
259+
}
260+
261+
@Test
262+
void testPrepareUserPropertyCanDisablePushChanges() throws Exception {
263+
ReleaseDescriptorBuilder builder = configStore.getReleaseConfiguration();
264+
builder.setCompletedPhase(null);
265+
builder.setPushChanges(true);
266+
267+
Properties userProperties = new Properties();
268+
userProperties.setProperty("pushChanges", "false");
269+
270+
ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
271+
prepareRequest.setReleaseDescriptorBuilder(builder);
272+
prepareRequest.setReleaseEnvironment(new DefaultReleaseEnvironment());
273+
prepareRequest.setResume(false);
274+
prepareRequest.setUserProperties(userProperties);
275+
276+
releaseManagerTest.prepare(prepareRequest);
277+
278+
assertFalse(
279+
((ReleasePhaseStub) phaseStep1).getReleaseDescriptor().isPushChanges(),
280+
"command-line pushChanges=false should override POM-configured pushChanges=true");
281+
}
282+
283+
@Test
284+
void testPrepareKeepsConfiguredPushChangesWhenUserPropertyAbsent() throws Exception {
285+
ReleaseDescriptorBuilder builder = configStore.getReleaseConfiguration();
286+
builder.setCompletedPhase(null);
287+
builder.setPushChanges(false);
288+
289+
ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
290+
prepareRequest.setReleaseDescriptorBuilder(builder);
291+
prepareRequest.setReleaseEnvironment(new DefaultReleaseEnvironment());
292+
prepareRequest.setResume(false);
293+
prepareRequest.setUserProperties(new Properties());
294+
295+
releaseManagerTest.prepare(prepareRequest);
296+
297+
assertFalse(
298+
((ReleasePhaseStub) phaseStep1).getReleaseDescriptor().isPushChanges(),
299+
"configured pushChanges should be preserved when no command-line override is given");
300+
}
301+
237302
@Test
238303
void testPrepareSimulateCompletedPhase() throws Exception {
239304
ReleaseDescriptorBuilder builder = configStore.getReleaseConfiguration();

maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ReleasePhaseStub.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ public class ReleasePhaseStub implements ReleasePhase, ResourceGenerator {
4646
*/
4747
private boolean cleaned;
4848

49+
/**
50+
* The descriptor the phase was last invoked with.
51+
*/
52+
private ReleaseDescriptor releaseDescriptor;
53+
4954
@Override
5055
public ReleaseResult execute(
5156
ReleaseDescriptor releaseDescriptor,
@@ -54,6 +59,7 @@ public ReleaseResult execute(
5459
ReleaseResult result = new ReleaseResult();
5560

5661
executed = true;
62+
this.releaseDescriptor = releaseDescriptor;
5763

5864
result.setResultCode(ReleaseResult.SUCCESS);
5965

@@ -68,6 +74,7 @@ public ReleaseResult simulate(
6874
ReleaseResult result = new ReleaseResult();
6975

7076
simulated = true;
77+
this.releaseDescriptor = releaseDescriptor;
7178

7279
result.setResultCode(ReleaseResult.SUCCESS);
7380

@@ -96,4 +103,8 @@ public boolean isSimulated() {
96103
public boolean isCleaned() {
97104
return cleaned;
98105
}
106+
107+
public ReleaseDescriptor getReleaseDescriptor() {
108+
return releaseDescriptor;
109+
}
99110
}

0 commit comments

Comments
 (0)