Merge branch 'stable-2.15' into stable-2.16

* stable-2.15:
  AbstractPushForReview: Test pushing a WIP change directly
  MergedByPushOp: Unset WIP when change is merged by push
  Close changes oldest-change-first when merging on push
  Schema_154: Fix MutableConstantField warning

Change-Id: I6491179d22632d1b1fafee7a86901f887eea46db
This commit is contained in:
David Pursehouse
2019-07-02 13:16:46 +09:00
2 changed files with 17 additions and 5 deletions

View File

@@ -136,6 +136,10 @@ public class MergedByPushOp implements BatchUpdateOp {
// submitted, this is why we must fix the status
update.fixStatus(Change.Status.MERGED);
update.setCurrentPatchSet();
if (change.isWorkInProgress()) {
change.setWorkInProgress(false);
update.setWorkInProgress(false);
}
StringBuilder msgBuf = new StringBuilder();
msgBuf.append("Change has been successfully pushed");
if (!refName.equals(change.getDest().get())) {

View File

@@ -757,36 +757,44 @@ public abstract class AbstractPushForReview extends AbstractDaemonTest {
assertUploadTag(r.getChange(), ChangeMessagesUtil.TAG_UPLOADED_WIP_PATCH_SET);
// Pushing a new patch set without --wip doesn't remove the wip flag from the change.
r = amendChange(r.getChangeId(), "refs/for/master");
String changeId = r.getChangeId();
r = amendChange(changeId, "refs/for/master");
r.assertOkStatus();
r.assertMessage(" [WIP]");
assertThat(r.getChange().change().isWorkInProgress()).isTrue();
assertUploadTag(r.getChange(), ChangeMessagesUtil.TAG_UPLOADED_WIP_PATCH_SET);
// Remove the wip flag from the change.
r = amendChange(r.getChangeId(), "refs/for/master%ready");
r = amendChange(changeId, "refs/for/master%ready");
r.assertOkStatus();
r.assertNotMessage(" [WIP]");
assertThat(r.getChange().change().isWorkInProgress()).isFalse();
assertUploadTag(r.getChange(), ChangeMessagesUtil.TAG_UPLOADED_PATCH_SET);
// Normal push: wip flag is not added back.
r = amendChange(r.getChangeId(), "refs/for/master");
r = amendChange(changeId, "refs/for/master");
r.assertOkStatus();
r.assertNotMessage(" [WIP]");
assertThat(r.getChange().change().isWorkInProgress()).isFalse();
assertUploadTag(r.getChange(), ChangeMessagesUtil.TAG_UPLOADED_PATCH_SET);
// Make the change work-in-progress again.
r = amendChange(r.getChangeId(), "refs/for/master%wip");
r = amendChange(changeId, "refs/for/master%wip");
r.assertOkStatus();
r.assertMessage(" [WIP]");
assertThat(r.getChange().change().isWorkInProgress()).isTrue();
assertUploadTag(r.getChange(), ChangeMessagesUtil.TAG_UPLOADED_WIP_PATCH_SET);
// Can't use --wip and --ready together.
r = amendChange(r.getChangeId(), "refs/for/master%wip,ready");
r = amendChange(changeId, "refs/for/master%wip,ready");
r.assertErrorStatus();
// Pushing directly to the branch removes the work-in-progress flag
String master = "refs/heads/master";
assertPushOk(pushHead(testRepo, master, false), master);
ChangeInfo result = Iterables.getOnlyElement(gApi.changes().query(changeId).get());
assertThat(result.status).isEqualTo(ChangeStatus.MERGED);
assertThat(result.workInProgress).isNull();
}
private void assertUploadTag(ChangeData cd, String expectedTag) throws Exception {