summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/com/google/gerrit/server/project/SubmitRequirementsAdapter.java7
-rw-r--r--javatests/com/google/gerrit/server/project/SubmitRequirementsAdapterTest.java23
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(