diff options
-rw-r--r-- | java/com/google/gerrit/server/project/SubmitRequirementsAdapter.java | 7 | ||||
-rw-r--r-- | javatests/com/google/gerrit/server/project/SubmitRequirementsAdapterTest.java | 23 |
2 files changed, 29 insertions, 1 deletions
diff --git a/java/com/google/gerrit/server/project/SubmitRequirementsAdapter.java b/java/com/google/gerrit/server/project/SubmitRequirementsAdapter.java index 39ba8b40af..23c8c8f106 100644 --- a/java/com/google/gerrit/server/project/SubmitRequirementsAdapter.java +++ b/java/com/google/gerrit/server/project/SubmitRequirementsAdapter.java @@ -186,7 +186,12 @@ public class SubmitRequirementsAdapter { } ImmutableList.Builder<SubmitRequirementResult> result = ImmutableList.builder(); for (Label label : record.labels) { - if (skipSubmitRequirementFor(label)) { + if (skipSubmitRequirementFor(label) + || + // If SubmitRecord is a PASS, then skip all the requirements + // that are not a PASS as they would block the overall submit requirement + // status from being a PASS + (mapStatus(record) == Status.PASS && mapStatus(label) != Status.PASS)) { continue; } String expressionString = String.format("label:%s=%s", label.label, ruleName); diff --git a/javatests/com/google/gerrit/server/project/SubmitRequirementsAdapterTest.java b/javatests/com/google/gerrit/server/project/SubmitRequirementsAdapterTest.java index 180dd9285c..fdf794b4b3 100644 --- a/javatests/com/google/gerrit/server/project/SubmitRequirementsAdapterTest.java +++ b/javatests/com/google/gerrit/server/project/SubmitRequirementsAdapterTest.java @@ -337,6 +337,29 @@ public class SubmitRequirementsAdapterTest { } @Test + public void customSubmitRule_withLabels_withStatusOk() { + SubmitRecord submitRecord = + createSubmitRecord( + "gerrit~PrologRule", + Status.OK, + Arrays.asList( + createLabel("custom-need-label-1", Label.Status.NEED), + createLabel("custom-pass-label-2", Label.Status.OK), + createLabel("custom-may-label-3", Label.Status.MAY))); + + List<SubmitRequirementResult> requirements = + SubmitRequirementsAdapter.createResult(submitRecord, labelTypes, psCommitId, false); + + assertThat(requirements).hasSize(1); + assertResult( + requirements.get(0), + /* reqName= */ "custom-pass-label-2", + /* submitExpression= */ "label:custom-pass-label-2=gerrit~PrologRule", + SubmitRequirementResult.Status.SATISFIED, + SubmitRequirementExpressionResult.Status.PASS); + } + + @Test public void customSubmitRule_withMixOfPassingAndFailingLabels() { SubmitRecord submitRecord = createSubmitRecord( |