diff --git a/java/com/google/gerrit/server/change/SetPrivateOp.java b/java/com/google/gerrit/server/change/SetPrivateOp.java index 2b00a40e7b..017dbecc97 100644 --- a/java/com/google/gerrit/server/change/SetPrivateOp.java +++ b/java/com/google/gerrit/server/change/SetPrivateOp.java @@ -22,6 +22,7 @@ import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.ChangeMessage; import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.server.ChangeMessagesUtil; +import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.extensions.events.PrivateStateChanged; import com.google.gerrit.server.notedb.ChangeNotes; @@ -83,7 +84,8 @@ public class SetPrivateOp implements BatchUpdateOp { } if (isPrivate && !change.isNew()) { - throw new BadRequestException("cannot set a non-open change to private"); + throw new BadRequestException( + String.format("cannot set %s change to private", ChangeUtil.status(change))); } ChangeNotes notes = ctx.getNotes(); ps = psUtil.get(notes, change.currentPatchSetId()); diff --git a/javatests/com/google/gerrit/acceptance/api/change/PrivateChangeIT.java b/javatests/com/google/gerrit/acceptance/api/change/PrivateChangeIT.java index ab3741b061..7973241b12 100644 --- a/javatests/com/google/gerrit/acceptance/api/change/PrivateChangeIT.java +++ b/javatests/com/google/gerrit/acceptance/api/change/PrivateChangeIT.java @@ -90,7 +90,20 @@ public class PrivateChangeIT extends AbstractDaemonTest { assertThat(gApi.changes().id(changeId).get().isPrivate).isNull(); exception.expect(BadRequestException.class); - exception.expectMessage("cannot set a non-open change to private"); + exception.expectMessage("cannot set merged change to private"); + gApi.changes().id(changeId).setPrivate(true); + } + + @Test + public void cannotSetAbandonedChangePrivate() throws Exception { + PushOneCommit.Result result = createChange(); + String changeId = result.getChangeId(); + + gApi.changes().id(changeId).abandon(); + assertThat(gApi.changes().id(changeId).get().isPrivate).isNull(); + + exception.expect(BadRequestException.class); + exception.expectMessage("cannot set abandoned change to private"); gApi.changes().id(changeId).setPrivate(true); }