diff --git a/models/git/commit_status.go b/models/git/commit_status.go index 882c18230e..9ff8d30195 100644 --- a/models/git/commit_status.go +++ b/models/git/commit_status.go @@ -228,7 +228,7 @@ func (status *CommitStatus) HideActionsURL(ctx context.Context) { } } -// CalcCommitStatus returns commit status state via some status, the commit statues should order by id desc +// CalcCommitStatus returns a combined status, the commit statuses should order by id desc func CalcCommitStatus(statuses []*CommitStatus) commitstatus.CombinedStatus { states := make(commitstatus.CommitStatusStates, 0, len(statuses)) for _, status := range statuses { @@ -237,7 +237,7 @@ func CalcCommitStatus(statuses []*CommitStatus) commitstatus.CombinedStatus { return states.Merge() } -// CalcCommitStatusSummary returns commit status state via some status, the commit statues should order by id desc +// CalcCommitStatusSummary returns commit status summary, the commit statuses should order by id desc func CalcCommitStatusSummary(statuses []*CommitStatus) *CommitStatusSummary { if len(statuses) == 0 { return nil diff --git a/modules/commitstatus/commit_status.go b/modules/commitstatus/commit_status.go index 13cbf85677..f7d4c7d710 100644 --- a/modules/commitstatus/commit_status.go +++ b/modules/commitstatus/commit_status.go @@ -20,33 +20,10 @@ const ( CommitStatusWarning CommitStatusState = "warning" ) -var commitStatusPriorities = map[CommitStatusState]int{ - CommitStatusError: 0, - CommitStatusFailure: 1, - CommitStatusWarning: 2, - CommitStatusPending: 3, - CommitStatusSuccess: 4, -} - func (css CommitStatusState) String() string { return string(css) } -// 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 5 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 diff --git a/modules/commitstatus/commit_status_test.go b/modules/commitstatus/commit_status_test.go deleted file mode 100644 index ced17e11d9..0000000000 --- a/modules/commitstatus/commit_status_test.go +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright 2023 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package commitstatus - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -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) - assert.Equal(t, tt.want, result) - }) - } -} diff --git a/services/convert/status.go b/services/convert/status.go index 243eaf6158..f71766a2c4 100644 --- a/services/convert/status.go +++ b/services/convert/status.go @@ -8,7 +8,6 @@ import ( git_model "code.gitea.io/gitea/models/git" user_model "code.gitea.io/gitea/models/user" - "code.gitea.io/gitea/modules/commitstatus" api "code.gitea.io/gitea/modules/structs" ) @@ -39,18 +38,12 @@ func ToCombinedStatus(ctx context.Context, statuses []*git_model.CommitStatus, r return nil } - retStatus := &api.CombinedStatus{ - SHA: statuses[0].SHA, + summary := git_model.CalcCommitStatusSummary(statuses) + return &api.CombinedStatus{ + State: summary.State, + SHA: summary.SHA, TotalCount: len(statuses), Repository: repo, - URL: "", + URL: summary.TargetURL, } - - states := make(commitstatus.CommitStatusStates, 0, len(statuses)) - for _, status := range statuses { - retStatus.Statuses = append(retStatus.Statuses, ToCommitStatus(ctx, status)) - states = append(states, status.State) - } - retStatus.State = states.Merge() - return retStatus }