ReceiveCommits: Fix error message when Force Push is required JGit only respects the message in the ReceiveCommand when the Result is REJECTED_OTHER_REASON. For any other result, it uses an internal mapping from enum value to hard-coded string. Change-Id: Ic857fc10bf96f11b4bd6a0e1fa79d9f66e7b73fd
diff --git a/java/com/google/gerrit/server/git/receive/ReceiveCommits.java b/java/com/google/gerrit/server/git/receive/ReceiveCommits.java index bcdc00b..6ff1ec9 100644 --- a/java/com/google/gerrit/server/git/receive/ReceiveCommits.java +++ b/java/com/google/gerrit/server/git/receive/ReceiveCommits.java
@@ -36,7 +36,6 @@ import static org.eclipse.jgit.transport.ReceiveCommand.Result.NOT_ATTEMPTED; import static org.eclipse.jgit.transport.ReceiveCommand.Result.OK; import static org.eclipse.jgit.transport.ReceiveCommand.Result.REJECTED_MISSING_OBJECT; -import static org.eclipse.jgit.transport.ReceiveCommand.Result.REJECTED_NONFASTFORWARD; import static org.eclipse.jgit.transport.ReceiveCommand.Result.REJECTED_OTHER_REASON; import com.google.common.base.Function; @@ -1228,8 +1227,7 @@ } actualCommands.add(cmd); } else { - cmd.setResult( - REJECTED_NONFASTFORWARD, " need '" + PermissionRule.FORCE_PUSH + "' privilege."); + cmd.setResult(REJECTED_OTHER_REASON, "need '" + PermissionRule.FORCE_PUSH + "' privilege."); } }
diff --git a/javatests/com/google/gerrit/acceptance/git/ForcePushIT.java b/javatests/com/google/gerrit/acceptance/git/ForcePushIT.java index 752da69..856644c 100644 --- a/javatests/com/google/gerrit/acceptance/git/ForcePushIT.java +++ b/javatests/com/google/gerrit/acceptance/git/ForcePushIT.java
@@ -51,7 +51,7 @@ pushFactory.create(db, admin.getIdent(), testRepo, "change2", "b.txt", "content"); push2.setForce(true); PushOneCommit.Result r2 = push2.to("refs/heads/master"); - r2.assertErrorStatus("non-fast forward"); + r2.assertErrorStatus("need 'Force Push' privilege."); } @Test
diff --git a/javatests/com/google/gerrit/acceptance/git/PushPermissionsIT.java b/javatests/com/google/gerrit/acceptance/git/PushPermissionsIT.java index ecc7e84..2811df5 100644 --- a/javatests/com/google/gerrit/acceptance/git/PushPermissionsIT.java +++ b/javatests/com/google/gerrit/acceptance/git/PushPermissionsIT.java
@@ -100,11 +100,7 @@ public void nonFastForwardUpdateDenied() throws Exception { ObjectId commit = testRepo.commit().create(); PushResult r = push("+" + commit.name() + ":refs/heads/master"); - assertThat(r) - .onlyRef("refs/heads/master") - // TODO(dborowitz): ReceivePack#sendStatusReport ignores the message unless the result is - // REJECTED_OTHER_REASON, which this is not. - .isRejected("non-fast forward"); + assertThat(r).onlyRef("refs/heads/master").isRejected("need 'Force Push' privilege."); assertThat(r).hasNoMessages(); // TODO(dborowitz): Why does this not mention refs? assertThat(r).hasProcessed(ImmutableMap.of());