From 1a392743c6ddde6d7b5467d869d892a82490ebca Mon Sep 17 00:00:00 2001 From: Zettat123 Date: Mon, 23 Jun 2025 12:38:10 -0600 Subject: [PATCH] backport 34815 --- services/pull/commit_status.go | 7 ++++--- services/pull/commit_status_test.go | 7 +++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/services/pull/commit_status.go b/services/pull/commit_status.go index 0bfff21746fd7..ca85d64d09eef 100644 --- a/services/pull/commit_status.go +++ b/services/pull/commit_status.go @@ -35,15 +35,16 @@ func MergeRequiredContextsCommitStatus(commitStatuses []*git_model.CommitStatus, } for _, gp := range requiredContextsGlob { - var targetStatus structs.CommitStatusState + var targetStatuses []*git_model.CommitStatus for _, commitStatus := range commitStatuses { if gp.Match(commitStatus.Context) { - targetStatus = commitStatus.State + targetStatuses = append(targetStatuses, commitStatus) matchedCount++ - break } } + targetStatus := git_model.CalcCommitStatus(targetStatuses).State + // If required rule not match any action, then it is pending if targetStatus == "" { if structs.CommitStatusPending.NoBetterThan(returnedStatus) { diff --git a/services/pull/commit_status_test.go b/services/pull/commit_status_test.go index 592acdd55cd43..be0c6030c7b72 100644 --- a/services/pull/commit_status_test.go +++ b/services/pull/commit_status_test.go @@ -30,6 +30,11 @@ func TestMergeRequiredContextsCommitStatus(t *testing.T) { {Context: "Build 2", State: structs.CommitStatusSuccess}, {Context: "Build 2t", State: structs.CommitStatusFailure}, }, + { + {Context: "Build 1", State: structs.CommitStatusSuccess}, + {Context: "Build 2", State: structs.CommitStatusSuccess}, + {Context: "Build 2t", State: structs.CommitStatusFailure}, + }, { {Context: "Build 1", State: structs.CommitStatusSuccess}, {Context: "Build 2", State: structs.CommitStatusSuccess}, @@ -45,6 +50,7 @@ func TestMergeRequiredContextsCommitStatus(t *testing.T) { {"Build*"}, {"Build*", "Build 2t*"}, {"Build*", "Build 2t*"}, + {"Build*"}, {"Build*", "Build 2t*", "Build 3*"}, {"Build*", "Build *", "Build 2t*", "Build 1*"}, } @@ -53,6 +59,7 @@ func TestMergeRequiredContextsCommitStatus(t *testing.T) { structs.CommitStatusSuccess, structs.CommitStatusPending, structs.CommitStatusFailure, + structs.CommitStatusFailure, structs.CommitStatusPending, structs.CommitStatusSuccess, }