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 <michael.kriese@visualon.de>
Co-committed-by: Michael Kriese <michael.kriese@visualon.de>
This commit is contained in:
Michael Kriese
2026-01-12 10:53:40 +01:00
committed by 0ko
parent fda54d59b8
commit 055973ce8c
2 changed files with 8 additions and 7 deletions
+5 -2
View File
@@ -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
}
}
+3 -5
View File
@@ -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)
}
}