ReceiveCommits: Prevent NPE setting updated change list for edit commit
When pushing an amended commit with the %edit option, the ReplaceRequest
has null info, which causes NPE when trying to use it to get the subject
of the new patch set. This results in the message:
"internal error while processing changes"
to be shown to the user instead of the "Updated Changes" list.
Use the ReplaceRequest's newCommit instead.
Also update AbstractPushForReview#testPushForMasterAsEdit to confirm that
the expected "Updated Changes" output is present.
Bug: Issue 4236
Change-Id: I82983219a3220d21f043fdc662f561e291fc0746
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/AbstractPushForReview.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/AbstractPushForReview.java
index 34679dd..f64a8a2 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/AbstractPushForReview.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/AbstractPushForReview.java
@@ -176,6 +176,10 @@
r.assertOkStatus();
edit = getEdit(r.getChangeId());
assertThat(edit).isNotNull();
+ r.assertMessage("Updated Changes:\n "
+ + canonicalWebUrl.get()
+ + r.getChange().getId()
+ + " " + edit.commit.subject + " [EDIT]\n");
}
@Test
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
index e618fcb..a185c9e 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
@@ -722,7 +722,7 @@
boolean edit = magicBranch != null && magicBranch.edit;
for (ReplaceRequest u : updated) {
addMessage(formatChangeUrl(canonicalWebUrl, u.change,
- u.info.getSubject(), edit));
+ u.newCommit.getShortMessage(), edit));
}
addMessage("");
}