mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-08-22 23:51:36 +02:00
- The `NoBetterThan` function can only handle comparisons between "pending," "success," "error," and "failure." For any other comparison, we directly return false. This prevents logic errors like the one in #26121. - The callers of the `NoBetterThan` function should also avoid making incomparable calls. --------- Co-authored-by: yp05327 <576951401@qq.com> Co-authored-by: puni9869 <80308335+puni9869@users.noreply.github.com>
62 lines
1.9 KiB
Go
62 lines
1.9 KiB
Go
// Copyright 2020 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package structs
|
|
|
|
// CommitStatusState holds the state of a CommitStatus
|
|
// It can be "pending", "success", "error" and "failure"
|
|
type CommitStatusState string
|
|
|
|
const (
|
|
// CommitStatusPending is for when the CommitStatus is Pending
|
|
CommitStatusPending CommitStatusState = "pending"
|
|
// CommitStatusSuccess is for when the CommitStatus is Success
|
|
CommitStatusSuccess CommitStatusState = "success"
|
|
// CommitStatusError is for when the CommitStatus is Error
|
|
CommitStatusError CommitStatusState = "error"
|
|
// CommitStatusFailure is for when the CommitStatus is Failure
|
|
CommitStatusFailure CommitStatusState = "failure"
|
|
)
|
|
|
|
var commitStatusPriorities = map[CommitStatusState]int{
|
|
CommitStatusError: 0,
|
|
CommitStatusFailure: 1,
|
|
CommitStatusPending: 2,
|
|
CommitStatusSuccess: 3,
|
|
}
|
|
|
|
// NoBetterThan returns true if this State is no better than the given State
|
|
// This function only handles the states defined in CommitStatusPriorities
|
|
func (css CommitStatusState) NoBetterThan(css2 CommitStatusState) bool {
|
|
// NoBetterThan only handles the 4 states above
|
|
if _, exist := commitStatusPriorities[css]; !exist {
|
|
return false
|
|
}
|
|
|
|
if _, exist := commitStatusPriorities[css2]; !exist {
|
|
return false
|
|
}
|
|
|
|
return commitStatusPriorities[css] <= commitStatusPriorities[css2]
|
|
}
|
|
|
|
// IsPending represents if commit status state is pending
|
|
func (css CommitStatusState) IsPending() bool {
|
|
return css == CommitStatusPending
|
|
}
|
|
|
|
// IsSuccess represents if commit status state is success
|
|
func (css CommitStatusState) IsSuccess() bool {
|
|
return css == CommitStatusSuccess
|
|
}
|
|
|
|
// IsError represents if commit status state is error
|
|
func (css CommitStatusState) IsError() bool {
|
|
return css == CommitStatusError
|
|
}
|
|
|
|
// IsFailure represents if commit status state is failure
|
|
func (css CommitStatusState) IsFailure() bool {
|
|
return css == CommitStatusFailure
|
|
}
|