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:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user