diff options
author | Dmitrii Filippov <dmfilippov@google.com> | 2023-11-06 18:14:26 +0100 |
---|---|---|
committer | Luca Milanesio <luca.milanesio@gmail.com> | 2023-11-10 15:03:50 +0000 |
commit | 30f122336a5be3212417b899e58c5c615b88b304 (patch) | |
tree | d13866827c13002365874e0294d1aa6b996db49a | |
parent | fcfb2d983cdeb861e570ae56361ab061c2233991 (diff) |
Return approver/rejector for a label if DETAILED_LABELS is passed.
This change fixes the same problem as in
https://gerrit-review.git.corp.google.com/c/gerrit/+/387097. The
original fix doesn't work for the case when the label is not required.
This change fixes the code for non-required label.
Google-Bug-Id: b/299770837
Release-Notes: skip
Change-Id: I3b5fce692c0667128fcc4216ef71af7fac4b30f0
(cherry picked from commit d2803569dba37d9b22a230c1b4610bf44339c59e)
-rw-r--r-- | java/com/google/gerrit/server/change/LabelsJson.java | 2 | ||||
-rw-r--r-- | javatests/com/google/gerrit/acceptance/api/change/PostReviewIT.java | 28 |
2 files changed, 27 insertions, 3 deletions
diff --git a/java/com/google/gerrit/server/change/LabelsJson.java b/java/com/google/gerrit/server/change/LabelsJson.java index ea495e798d..e4118d5c03 100644 --- a/java/com/google/gerrit/server/change/LabelsJson.java +++ b/java/com/google/gerrit/server/change/LabelsJson.java @@ -223,7 +223,7 @@ public class LabelsJson { if (!type.isPresent()) { continue; } - if (standard) { + if (standard || detailed) { for (PatchSetApproval psa : cd.currentApprovals()) { if (type.get().matches(psa)) { short val = psa.value(); diff --git a/javatests/com/google/gerrit/acceptance/api/change/PostReviewIT.java b/javatests/com/google/gerrit/acceptance/api/change/PostReviewIT.java index b2a0f56ceb..1b06b7b252 100644 --- a/javatests/com/google/gerrit/acceptance/api/change/PostReviewIT.java +++ b/javatests/com/google/gerrit/acceptance/api/change/PostReviewIT.java @@ -46,6 +46,7 @@ import com.google.gerrit.common.Nullable; import com.google.gerrit.entities.Account; import com.google.gerrit.entities.AttentionSetUpdate; import com.google.gerrit.entities.Change; +import com.google.gerrit.entities.LabelFunction; import com.google.gerrit.entities.LabelId; import com.google.gerrit.entities.LabelType; import com.google.gerrit.entities.PatchSet; @@ -603,16 +604,38 @@ public class PostReviewIT extends AbstractDaemonTest { @Test public void onPostReviewApprovedIsReturnedForLabelsAndDetailedLabels() throws Exception { + // Create Verify label with NO_BLOCK function and allow voting on it. + // When the NO_BLOCK function is used for a label, the "approved" is set by the + // LabelsJson.setLabelScores method instead of LabelsJson.initLabels method. + try (ProjectConfigUpdate u = updateProject(project)) { + LabelType.Builder verified = + labelBuilder( + LabelId.VERIFIED, value(1, "Passes"), value(0, "No score"), value(-1, "Failed")) + .setFunction(LabelFunction.NO_BLOCK); + u.getConfig().upsertLabelType(verified.build()); + u.save(); + } + projectOperations + .project(project) + .forUpdate() + .add( + allowLabel(LabelId.VERIFIED) + .ref(RefNames.REFS_HEADS + "*") + .group(REGISTERED_USERS) + .range(-1, 1)) + .update(); PushOneCommit.Result r = createChange(); - ReviewInput input = new ReviewInput().label(LabelId.CODE_REVIEW, 2); + ReviewInput input = new ReviewInput().label(LabelId.CODE_REVIEW, 2).label(LabelId.VERIFIED, 1); gApi.changes().id(r.getChangeId()).current().review(input); input = new ReviewInput(); input.message = "first message"; input.responseFormatOptions = ImmutableList.of(ListChangesOption.DETAILED_LABELS); ReviewResult reviewResult = gApi.changes().id(r.getChangeId()).current().review(input); - assertThat(reviewResult.changeInfo.labels).containsKey(LabelId.CODE_REVIEW); + assertThat(reviewResult.changeInfo.labels.keySet()) + .containsExactly(LabelId.CODE_REVIEW, LabelId.VERIFIED); assertThat(reviewResult.changeInfo.labels.get(LabelId.CODE_REVIEW).approved).isNotNull(); + assertThat(reviewResult.changeInfo.labels.get(LabelId.VERIFIED).approved).isNotNull(); input = new ReviewInput(); input.message = "second message"; @@ -620,6 +643,7 @@ public class PostReviewIT extends AbstractDaemonTest { reviewResult = gApi.changes().id(r.getChangeId()).current().review(input); assertThat(reviewResult.changeInfo.labels).containsKey(LabelId.CODE_REVIEW); assertThat(reviewResult.changeInfo.labels.get(LabelId.CODE_REVIEW).approved).isNotNull(); + assertThat(reviewResult.changeInfo.labels.get(LabelId.VERIFIED).approved).isNotNull(); } @Test |