mirror of https://github.com/go-gitea/gitea
refactor improve NoBetterThan (#26126)
- 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>pull/26159/head^2
parent
df9afe3aa8
commit
13359581df
@ -0,0 +1,174 @@ |
|||||||
|
// 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) |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue