Make "commit statuses" API accept slashes in "ref" (#36264)

Fix #36253

Support slashes in `{ref}` (follow GitHub's behavior)
This commit is contained in:
wxiaoguang
2026-01-01 09:56:07 +08:00
committed by GitHub
parent 1771569300
commit 094104bc91
6 changed files with 94 additions and 145 deletions
+9 -18
View File
@@ -76,12 +76,7 @@ func TestPullCreate_CommitStatus(t *testing.T) {
// Update commit status, and check if icon is updated as well
for _, status := range statusList {
// Call API to add status for commit
t.Run("CreateStatus", doAPICreateCommitStatus(testCtx, commitID, api.CreateStatusOption{
State: status,
TargetURL: "http://test.ci/",
Description: "",
Context: "testci",
}))
t.Run("CreateStatus", doAPICreateCommitStatusTest(testCtx, commitID, status, "testci"))
req = NewRequest(t, "GET", "/user1/repo1/pulls/1/commits")
resp = session.MakeRequest(t, req, http.StatusOK)
@@ -103,19 +98,15 @@ func TestPullCreate_CommitStatus(t *testing.T) {
})
}
func doAPICreateCommitStatus(ctx APITestContext, commitID string, data api.CreateStatusOption) func(*testing.T) {
func doAPICreateCommitStatusTest(ctx APITestContext, ref string, state commitstatus.CommitStatusState, statusContext string) func(*testing.T) {
return func(t *testing.T) {
req := NewRequestWithJSON(
t,
http.MethodPost,
fmt.Sprintf("/api/v1/repos/%s/%s/statuses/%s", ctx.Username, ctx.Reponame, commitID),
data,
).AddTokenAuth(ctx.Token)
if ctx.ExpectedCode != 0 {
ctx.Session.MakeRequest(t, req, ctx.ExpectedCode)
return
}
ctx.Session.MakeRequest(t, req, http.StatusCreated)
link := fmt.Sprintf("/api/v1/repos/%s/%s/statuses/%s", ctx.Username, ctx.Reponame, url.PathEscape(ref))
req := NewRequestWithJSON(t, http.MethodPost, link, api.CreateStatusOption{
State: state,
TargetURL: "http://test.ci/",
Context: statusContext,
}).AddTokenAuth(ctx.Token)
ctx.Session.MakeRequest(t, req, ctx.ExpectedCode)
}
}