loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Remove commit status running and warning to align GitHub (#25839)

Fix #25776. Close #25826.

In the discussion of #25776, @wolfogre's suggestion was to remove the
commit status of `running` and `warning` to keep it consistent with
github.

references:
-
https://docs.github.com/en/rest/commits/statuses?apiVersion=2022-11-28#about-commit-statuses


## :warning: BREAKING :warning:

So the commit status of Gitea will be consistent with GitHub, only
`pending`, `success`, `error` and `failure`, while `warning` and
`running` are not supported anymore.

---------

Co-authored-by: Jason Song <i@wolfogre.com>

authored by

caicandong
Jason Song
and committed by
GitHub
840830b6 d57e55cd

+45 -44
-4
models/git/commit_status_test.go
··· 31 31 assert.Equal(t, structs.CommitStatusPending, statuses[0].State) 32 32 assert.Equal(t, "https://try.gitea.io/api/v1/repos/user2/repo1/statuses/1234123412341234123412341234123412341234", statuses[0].APIURL(db.DefaultContext)) 33 33 34 - assert.Equal(t, "cov/awesomeness", statuses[1].Context) 35 - assert.Equal(t, structs.CommitStatusWarning, statuses[1].State) 36 - assert.Equal(t, "https://try.gitea.io/api/v1/repos/user2/repo1/statuses/1234123412341234123412341234123412341234", statuses[1].APIURL(db.DefaultContext)) 37 - 38 34 assert.Equal(t, "cov/awesomeness", statuses[2].Context) 39 35 assert.Equal(t, structs.CommitStatusSuccess, statuses[2].State) 40 36 assert.Equal(t, "https://try.gitea.io/api/v1/repos/user2/repo1/statuses/1234123412341234123412341234123412341234", statuses[2].APIURL(db.DefaultContext))
+2
models/migrations/migrations.go
··· 513 513 NewMigration("Add branch table", v1_21.AddBranchTable), 514 514 // v265 -> v266 515 515 NewMigration("Alter Actions Artifact table", v1_21.AlterActionArtifactTable), 516 + // v266 -> v267 517 + NewMigration("Reduce commit status", v1_21.ReduceCommitStatus), 516 518 } 517 519 518 520 // GetCurrentDBVersion returns the current db version
+26
models/migrations/v1_21/v266.go
··· 1 + // Copyright 2023 The Gitea Authors. All rights reserved. 2 + // SPDX-License-Identifier: MIT 3 + 4 + package v1_21 //nolint 5 + 6 + import ( 7 + "xorm.io/xorm" 8 + ) 9 + 10 + func ReduceCommitStatus(x *xorm.Engine) error { 11 + sess := x.NewSession() 12 + defer sess.Close() 13 + 14 + if err := sess.Begin(); err != nil { 15 + return err 16 + } 17 + 18 + if _, err := sess.Exec(`UPDATE commit_status SET state='pending' WHERE state='running'`); err != nil { 19 + return err 20 + } 21 + if _, err := sess.Exec(`UPDATE commit_status SET state='failure' WHERE state='warning'`); err != nil { 22 + return err 23 + } 24 + 25 + return sess.Commit() 26 + }
+6 -20
modules/structs/commit_status.go
··· 16 16 CommitStatusError CommitStatusState = "error" 17 17 // CommitStatusFailure is for when the CommitStatus is Failure 18 18 CommitStatusFailure CommitStatusState = "failure" 19 - // CommitStatusWarning is for when the CommitStatus is Warning 20 - CommitStatusWarning CommitStatusState = "warning" 21 - // CommitStatusRunning is for when the CommitStatus is Running 22 - CommitStatusRunning CommitStatusState = "running" 23 19 ) 24 20 25 21 // NoBetterThan returns true if this State is no better than the given State 26 22 func (css CommitStatusState) NoBetterThan(css2 CommitStatusState) bool { 27 - switch css { 28 - case CommitStatusError: 29 - return true 30 - case CommitStatusFailure: 31 - return css2 != CommitStatusError 32 - case CommitStatusWarning: 33 - return css2 != CommitStatusError && css2 != CommitStatusFailure 34 - case CommitStatusPending: 35 - return css2 != CommitStatusError && css2 != CommitStatusFailure && css2 != CommitStatusWarning 36 - default: 37 - return css2 != CommitStatusError && css2 != CommitStatusFailure && css2 != CommitStatusWarning && css2 != CommitStatusPending 23 + commitStatusPriorities := map[CommitStatusState]int{ 24 + CommitStatusError: 0, 25 + CommitStatusFailure: 1, 26 + CommitStatusPending: 2, 27 + CommitStatusSuccess: 3, 38 28 } 29 + return commitStatusPriorities[css] <= commitStatusPriorities[css2] 39 30 } 40 31 41 32 // IsPending represents if commit status state is pending ··· 57 48 func (css CommitStatusState) IsFailure() bool { 58 49 return css == CommitStatusFailure 59 50 } 60 - 61 - // IsWarning represents if commit status state is warning 62 - func (css CommitStatusState) IsWarning() bool { 63 - return css == CommitStatusWarning 64 - }
+2 -6
services/actions/commit_status.go
··· 137 137 switch status { 138 138 case actions_model.StatusSuccess, actions_model.StatusSkipped: 139 139 return api.CommitStatusSuccess 140 - case actions_model.StatusFailure: 140 + case actions_model.StatusFailure, actions_model.StatusCancelled: 141 141 return api.CommitStatusFailure 142 - case actions_model.StatusCancelled: 143 - return api.CommitStatusWarning 144 - case actions_model.StatusWaiting, actions_model.StatusBlocked: 142 + case actions_model.StatusWaiting, actions_model.StatusBlocked, actions_model.StatusRunning: 145 143 return api.CommitStatusPending 146 - case actions_model.StatusRunning: 147 - return api.CommitStatusRunning 148 144 default: 149 145 return api.CommitStatusError 150 146 }
+8
services/convert/status.go
··· 52 52 retStatus.State = status.State 53 53 } 54 54 } 55 + // According to https://docs.github.com/en/rest/commits/statuses?apiVersion=2022-11-28#get-the-combined-status-for-a-specific-reference 56 + // > Additionally, a combined state is returned. The state is one of: 57 + // > failure if any of the contexts report as error or failure 58 + // > pending if there are no statuses or a context is pending 59 + // > success if the latest status for all contexts is success 60 + if retStatus.State.IsError() { 61 + retStatus.State = api.CommitStatusFailure 62 + } 55 63 56 64 return retStatus 57 65 }
+1 -4
templates/repo/commit_status.tmpl
··· 1 - {{if or (eq .State "pending") (eq .State "running")}} 1 + {{if eq .State "pending"}} 2 2 {{svg "octicon-dot-fill" 18 "commit-status icon text yellow"}} 3 3 {{end}} 4 4 {{if eq .State "success"}} ··· 10 10 {{if eq .State "failure"}} 11 11 {{svg "octicon-x" 18 "commit-status icon text red"}} 12 12 {{end}} 13 - {{if eq .State "warning"}} 14 - {{svg "gitea-exclamation" 18 "commit-status icon text yellow"}} 15 - {{end}}
-2
tests/integration/pull_status_test.go
··· 52 52 api.CommitStatusPending, 53 53 api.CommitStatusError, 54 54 api.CommitStatusFailure, 55 - api.CommitStatusWarning, 56 55 api.CommitStatusSuccess, 57 56 } 58 57 ··· 61 60 api.CommitStatusSuccess: "octicon-check", 62 61 api.CommitStatusError: "gitea-exclamation", 63 62 api.CommitStatusFailure: "octicon-x", 64 - api.CommitStatusWarning: "gitea-exclamation", 65 63 } 66 64 67 65 testCtx := NewAPITestContext(t, "user1", "repo1", auth_model.AccessTokenScopeWriteRepository)
-8
tests/integration/repo_commits_test.go
··· 125 125 doTestRepoCommitWithStatus(t, "failure", "octicon-x", "red") 126 126 } 127 127 128 - func TestRepoCommitsWithStatusWarning(t *testing.T) { 129 - doTestRepoCommitWithStatus(t, "warning", "gitea-exclamation", "yellow") 130 - } 131 - 132 - func TestRepoCommitsWithStatusRunning(t *testing.T) { 133 - doTestRepoCommitWithStatus(t, "running", "octicon-dot-fill", "yellow") 134 - } 135 - 136 128 func TestRepoCommitsStatusParallel(t *testing.T) { 137 129 defer tests.PrepareTestEnv(t)() 138 130