summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitrii Filippov <dmfilippov@google.com>2023-11-06 18:14:26 +0100
committerLuca Milanesio <luca.milanesio@gmail.com>2023-11-10 15:03:50 +0000
commit30f122336a5be3212417b899e58c5c615b88b304 (patch)
treed13866827c13002365874e0294d1aa6b996db49a
parentfcfb2d983cdeb861e570ae56361ab061c2233991 (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.java2
-rw-r--r--javatests/com/google/gerrit/acceptance/api/change/PostReviewIT.java28
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