1
Fork 0

fix commit_status

This commit is contained in:
oliverpool 2024-03-19 14:03:28 +01:00
parent 2536c2db89
commit 3b7b899afa
5 changed files with 23 additions and 21 deletions

View file

@ -199,22 +199,17 @@ func (status *CommitStatus) LocaleString(lang translation.Locale) string {
// CalcCommitStatus returns commit status state via some status, the commit statues should order by id desc
func CalcCommitStatus(statuses []*CommitStatus) *CommitStatus {
var lastStatus *CommitStatus
state := api.CommitStatusSuccess
for _, status := range statuses {
if status.State.NoBetterThan(state) {
state = status.State
lastStatus = status
if len(statuses) == 0 {
return nil
}
latestWorstStatus := statuses[0]
for _, status := range statuses[1:] {
if status.State.NoBetterThan(latestWorstStatus.State) {
latestWorstStatus = status
}
}
if lastStatus == nil {
if len(statuses) > 0 {
lastStatus = statuses[0]
} else {
lastStatus = &CommitStatus{}
}
}
return lastStatus
return latestWorstStatus
}
// CommitStatusOptions holds the options for query commit statuses

View file

@ -141,16 +141,20 @@ func Test_CalcCommitStatus(t *testing.T) {
statuses: []*git_model.CommitStatus{
{
State: structs.CommitStatusSuccess,
ID: 1,
},
{
State: structs.CommitStatusSuccess,
ID: 2,
},
{
State: structs.CommitStatusSuccess,
ID: 3,
},
},
expected: &git_model.CommitStatus{
State: structs.CommitStatusSuccess,
ID: 3,
},
},
{
@ -169,6 +173,10 @@ func Test_CalcCommitStatus(t *testing.T) {
State: structs.CommitStatusError,
},
},
{
statuses: []*git_model.CommitStatus{},
expected: nil,
},
}
for _, kase := range kases {