@@ -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 ();
0 commit comments