-
-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Fix actions skipped commit status indicator #34507
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix actions skipped commit status indicator #34507
Conversation
Seems good, but I wonder whether the other two missing statuses from action model should also be represented in commit status. Currently "blocked" and "unknown" are missing: gitea/models/actions/status.go Lines 15 to 24 in 14bb8f7
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Change is LGMT but we should review the other two potential missing states later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For consistency maybe add add
// IsSkipped represents if commit status state is skipped
func (css CommitStatusState) IsSkipped() bool {
return css == CommitStatusSkipped
}
I sent #34531 to introduce the CombinedStatus concept. |
@lunny / @ChristopherHX |
@badhezi Seems like my "regression" was not real This test confirms your PR is fine, skipped never leaks to pull requests func testAPICreateBranchProtectionWithRepo(t *testing.T, owner, repo, branchName string, body *api.BranchProtection, expectedHTTPStatus int) {
token := getUserToken(t, "user2", auth_model.AccessTokenScopeWriteRepository)
req := NewRequestWithJSON(t, "POST", fmt.Sprintf("/api/v1/repos/%s/%s/branch_protections", owner, repo), body).
AddTokenAuth(token)
resp := MakeRequest(t, req, expectedHTTPStatus)
if resp.Code == http.StatusOK {
var branchProtection api.BranchProtection
DecodeJSON(t, resp, &branchProtection)
assert.Equal(t, branchName, branchProtection.RuleName)
}
}
func TestMergePullRequestWithSkippedTest(t *testing.T) {
onGiteaRun(t, func(t *testing.T, u *url.URL) {
// user2 is the owner of the base repo
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
user2Token := getTokenForLoggedInUser(t, loginUser(t, user2.Name), auth_model.AccessTokenScopeWriteRepository, auth_model.AccessTokenScopeWriteUser)
// create the base repo
apiBaseRepo := createActionsTestRepo(t, user2Token, "merge-pull-request-with-skipped", false)
baseRepo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: apiBaseRepo.ID})
user2APICtx := NewAPITestContext(t, baseRepo.OwnerName, baseRepo.Name, auth_model.AccessTokenScopeWriteRepository)
// init the workflow
wfTreePath := ".gitea/workflows/pull.yml"
wfFileContent := `name: Pull Request
on:
pull_request:
jobs:
echo:
runs-on: ubuntu-latest
if: 'false'
steps:
- run: echo 'Hello World'
`
opts1 := getWorkflowCreateFileOptions(user2, baseRepo.DefaultBranch, "create "+wfTreePath, wfFileContent)
createWorkflowFile(t, user2Token, baseRepo.OwnerName, baseRepo.Name, wfTreePath, opts1)
// user4 creates a pull request to add file "app/main.go"
doAPICreateFile(user2APICtx, "app/main.go", &api.CreateFileOptions{
FileOptions: api.FileOptions{
NewBranchName: "user4/add-main",
Message: "create main.go",
Author: api.Identity{
Name: user2.Name,
Email: user2.Email,
},
Committer: api.Identity{
Name: user2.Name,
Email: user2.Email,
},
Dates: api.CommitDateOptions{
Author: time.Now(),
Committer: time.Now(),
},
},
ContentBase64: base64.StdEncoding.EncodeToString([]byte("// main.go")),
})(t)
apiPull, err := doAPICreatePullRequest(user2APICtx, baseRepo.OwnerName, baseRepo.Name, baseRepo.DefaultBranch, "user4/add-main")(t)
assert.NoError(t, err)
// enable status checks, require the "test1" check to pass
testAPICreateBranchProtectionWithRepo(t, baseRepo.OwnerName, baseRepo.Name, baseRepo.DefaultBranch, &api.BranchProtection{
BlockAdminMergeOverride: true,
RuleName: baseRepo.DefaultBranch,
EnableStatusCheck: true,
StatusCheckContexts: []string{"Pull Request / echo (pull_request)"},
}, http.StatusCreated)
runner := newMockRunner()
runner.registerAsRepoRunner(t, user2.Name, baseRepo.Name, "mock-runner", []string{"ubuntu-latest"}, false)
// TODO remove this once we have a way to skip jobs on Gitea side
task := runner.fetchTask(t)
runner.execTask(t, task, &mockTaskOutcome{
result: runnerv1.Result_RESULT_SKIPPED,
})
doAPIMergePullRequest(user2APICtx, baseRepo.OwnerName, baseRepo.Name, apiPull.Index)(t)
pullRequest := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: apiPull.ID})
_ = pullRequest
})
} |
c35f9e4
to
8d78184
Compare
Addresses #34500