From 055973ce8c270f5cf51192b8ce98585d7281cd66 Mon Sep 17 00:00:00 2001 From: Michael Kriese Date: Mon, 12 Jan 2026 10:53:40 +0100 Subject: [PATCH] fix: correctly compute required commit status (#10747) We need to take all matching required status into account to get the desired status because there can be some pending. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/10747 Reviewed-by: 0ko <0ko@noreply.codeberg.org> Co-authored-by: Michael Kriese Co-committed-by: Michael Kriese --- 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 0a95ea1152..4821e2cceb 100644 --- a/services/pull/commit_status.go +++ b/services/pull/commit_status.go @@ -39,9 +39,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) } }