mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-08-24 00:21:48 +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>
175 lines
3.2 KiB
Go
175 lines
3.2 KiB
Go
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package structs
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestNoBetterThan(t *testing.T) {
|
|
type args struct {
|
|
css CommitStatusState
|
|
css2 CommitStatusState
|
|
}
|
|
var unExpectedState CommitStatusState
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want bool
|
|
}{
|
|
{
|
|
name: "success is no better than success",
|
|
args: args{
|
|
css: CommitStatusSuccess,
|
|
css2: CommitStatusSuccess,
|
|
},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "success is no better than pending",
|
|
args: args{
|
|
css: CommitStatusSuccess,
|
|
css2: CommitStatusPending,
|
|
},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "success is no better than failure",
|
|
args: args{
|
|
css: CommitStatusSuccess,
|
|
css2: CommitStatusFailure,
|
|
},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "success is no better than error",
|
|
args: args{
|
|
css: CommitStatusSuccess,
|
|
css2: CommitStatusError,
|
|
},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "pending is no better than success",
|
|
args: args{
|
|
css: CommitStatusPending,
|
|
css2: CommitStatusSuccess,
|
|
},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "pending is no better than pending",
|
|
args: args{
|
|
css: CommitStatusPending,
|
|
css2: CommitStatusPending,
|
|
},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "pending is no better than failure",
|
|
args: args{
|
|
css: CommitStatusPending,
|
|
css2: CommitStatusFailure,
|
|
},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "pending is no better than error",
|
|
args: args{
|
|
css: CommitStatusPending,
|
|
css2: CommitStatusError,
|
|
},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "failure is no better than success",
|
|
args: args{
|
|
css: CommitStatusFailure,
|
|
css2: CommitStatusSuccess,
|
|
},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "failure is no better than pending",
|
|
args: args{
|
|
css: CommitStatusFailure,
|
|
css2: CommitStatusPending,
|
|
},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "failure is no better than failure",
|
|
args: args{
|
|
css: CommitStatusFailure,
|
|
css2: CommitStatusFailure,
|
|
},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "failure is no better than error",
|
|
args: args{
|
|
css: CommitStatusFailure,
|
|
css2: CommitStatusError,
|
|
},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "error is no better than success",
|
|
args: args{
|
|
css: CommitStatusError,
|
|
css2: CommitStatusSuccess,
|
|
},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "error is no better than pending",
|
|
args: args{
|
|
css: CommitStatusError,
|
|
css2: CommitStatusPending,
|
|
},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "error is no better than failure",
|
|
args: args{
|
|
css: CommitStatusError,
|
|
css2: CommitStatusFailure,
|
|
},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "error is no better than error",
|
|
args: args{
|
|
css: CommitStatusError,
|
|
css2: CommitStatusError,
|
|
},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "unExpectedState is no better than success",
|
|
args: args{
|
|
css: unExpectedState,
|
|
css2: CommitStatusSuccess,
|
|
},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "unExpectedState is no better than unExpectedState",
|
|
args: args{
|
|
css: unExpectedState,
|
|
css2: unExpectedState,
|
|
},
|
|
want: false,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result := tt.args.css.NoBetterThan(tt.args.css2)
|
|
if result != tt.want {
|
|
t.Errorf("NoBetterThan() = %v, want %v", result, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|