From 7e73f047ba48563cf952c85a98d1471cbf5d95bc Mon Sep 17 00:00:00 2001 From: forgejo-backport-action Date: Mon, 12 Jan 2026 13:08:25 +0100 Subject: [PATCH] [v11.0/forgejo] fix: correctly compute required commit status (#10787) **Backport:** https://codeberg.org/forgejo/forgejo/pulls/10747 We need to take all matching required status into account to get the desired status because there can be some pending. ## Release notes - Bug fixes - [PR](https://codeberg.org/forgejo/forgejo/pulls/10787): fix: correctly compute required commit status Co-authored-by: Michael Kriese Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/10787 Reviewed-by: Michael Kriese Co-authored-by: forgejo-backport-action Co-committed-by: forgejo-backport-action --- services/pull/commit_status.go | 7 +++++-- services/pull/commit_status_test.go | 8 +++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/services/pull/commit_status.go b/services/pull/commit_status.go index 3c864c8ef2..9ff5cb99fa 100644 --- a/services/pull/commit_status.go +++ b/services/pull/commit_status.go @@ -40,9 +40,12 @@ func MergeRequiredContextsCommitStatus(commitStatuses []*git_model.CommitStatus, var targetStatus structs.CommitStatusState for _, commitStatus := range commitStatuses { if gp.Match(commitStatus.Context) { - targetStatus = commitStatus.State + if targetStatus == "" { + targetStatus = commitStatus.State + } else if commitStatus.State.NoBetterThan(targetStatus) { + targetStatus = commitStatus.State + } matchedCount++ - break } } diff --git a/services/pull/commit_status_test.go b/services/pull/commit_status_test.go index 593c88fb19..39fe587e74 100644 --- a/services/pull/commit_status_test.go +++ b/services/pull/commit_status_test.go @@ -22,8 +22,8 @@ func TestMergeRequiredContextsCommitStatus(t *testing.T) { }, { {Context: "Build 1", State: structs.CommitStatusSuccess}, - {Context: "Build 2", State: structs.CommitStatusSuccess}, - {Context: "Build 2t", State: structs.CommitStatusPending}, + {Context: "Build 2", State: structs.CommitStatusPending}, + {Context: "Build 2t", State: structs.CommitStatusSuccess}, }, { {Context: "Build 1", State: structs.CommitStatusSuccess}, @@ -58,8 +58,6 @@ func TestMergeRequiredContextsCommitStatus(t *testing.T) { } for i, commitStatuses := range testCases { - if MergeRequiredContextsCommitStatus(commitStatuses, testCasesRequiredContexts[i]) != testCasesExpected[i] { - assert.Fail(t, "Test case failed", "Test case %d failed", i+1) - } + assert.Equal(t, testCasesExpected[i], MergeRequiredContextsCommitStatus(commitStatuses, testCasesRequiredContexts[i]), "Test case %d failed", i+1) } }