[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.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Bug fixes
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/10787): <!--number 10787 --><!--line 0 --><!--description Zml4OiBjb3JyZWN0bHkgY29tcHV0ZSByZXF1aXJlZCBjb21taXQgc3RhdHVz-->fix: correctly compute required commit status<!--description-->
<!--end release-notes-assistant-->

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/10787
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
This commit is contained in:
forgejo-backport-action 2026-01-12 13:08:25 +01:00 committed by Michael Kriese
parent 52406dc6ea
commit 7e73f047ba
2 changed files with 8 additions and 7 deletions

View file

@ -40,9 +40,12 @@ func MergeRequiredContextsCommitStatus(commitStatuses []*git_model.CommitStatus,
var targetStatus structs.CommitStatusState
for _, commitStatus := range commitStatuses {
if gp.Match(commitStatus.Context) {
if targetStatus == "" {
targetStatus = commitStatus.State
} else if commitStatus.State.NoBetterThan(targetStatus) {
targetStatus = commitStatus.State
}
matchedCount++
break
}
}

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)
}
}