mirror of
https://gitea.com/gitea/tea.git
synced 2026-10-26 19:11:25 +01:00
fix: tighten error classification and pull request selection
Only Gitea's archived-repository messages mean the repository is archived, so an archived label is no longer reported as one. Refused POSTs to the organization, team, user and SSH key collections name the resource they would have created, and the existing pull request is looked up with escaped branch names. pullSelector without an argument refuses an explicit --repo, like gh: the checked-out branch says nothing about another repository. Signed-off-by: bircni <bircni@icloud.com>
This commit is contained in:
7 files changed
+41
-23
No files matched your search
@@ -141,7 +141,7 @@ var refusals = []struct {
|
||||
statuses []int
|
||||
fragments []string
|
||||
}{
|
||||
{ReasonArchived, nil, []string{"is archived"}},
|
||||
{ReasonArchived, nil, []string{"repo is archived", "repository is archived", "> is archived"}},
|
||||
{ReasonMerged, nil, []string{"already merged"}},
|
||||
{ReasonDraft, []int{http.StatusMethodNotAllowed}, []string{"work in progress", "draft"}},
|
||||
{ReasonOwnReview, nil, []string{"approve your own pull", "reject your own pull"}},
|
||||
@@ -341,16 +341,24 @@ func instanceResource(parts []string) Resource {
|
||||
return Resource{Kind: "member", Key: strconv.Quote(at(3)), Scope: at(1)}
|
||||
case at(0) == "orgs" && at(1) != "" && at(2) == "repos":
|
||||
return Resource{Kind: "organization", Key: strconv.Quote(at(1)), Collection: "repository"}
|
||||
case at(0) == "orgs" && at(1) != "" && at(2) == "teams":
|
||||
return Resource{Kind: "organization", Key: strconv.Quote(at(1)), Collection: "team"}
|
||||
case at(0) == "orgs" && at(1) != "":
|
||||
return Resource{Kind: "organization", Key: strconv.Quote(at(1))}
|
||||
case at(0) == "orgs":
|
||||
return Resource{Collection: "organization"}
|
||||
case at(0) == "users" && at(1) != "":
|
||||
return Resource{Kind: "user", Key: strconv.Quote(at(1))}
|
||||
case at(0) == "admin" && at(1) == "users" && at(2) != "":
|
||||
return Resource{Kind: "user", Key: strconv.Quote(at(2))}
|
||||
case at(0) == "admin" && at(1) == "users":
|
||||
return Resource{Collection: "user"}
|
||||
case at(0) == "teams" && isNumber(at(1)):
|
||||
return Resource{Kind: "team", Key: at(1)}
|
||||
case at(0) == "user" && at(1) == "keys" && at(2) != "":
|
||||
return Resource{Kind: "SSH key", Key: at(2)}
|
||||
case at(0) == "user" && at(1) == "keys":
|
||||
return Resource{Collection: "SSH key"}
|
||||
case at(0) == "user" && at(1) == "repos":
|
||||
return Resource{Collection: "repository"}
|
||||
case at(0) == "notifications" && at(1) == "threads" && at(2) != "":
|
||||
|
||||
@@ -51,6 +51,10 @@ func TestClassifyRequestNamesTheResource(t *testing.T) {
|
||||
{"wiki page exists", "POST", "/api/v1/repos/alice/x/wiki/new", "wiki page already exists [title: Home.md]", 400, `wiki page "Home" already exists in alice/x`},
|
||||
{"repository exists", "POST", "/api/v1/user/repos", "The repository with the same name already exists.", 409, "repository already exists"},
|
||||
{"org repository exists", "POST", "/api/v1/orgs/acme/repos", "The repository with the same name already exists.", 409, "repository already exists"},
|
||||
{"team exists", "POST", "/api/v1/orgs/acme/teams", "team already exists [org_id: 3, name: devs]", 422, "team already exists"},
|
||||
{"user exists", "POST", "/api/v1/admin/users", "user already exists [name: bob]", 422, "user already exists"},
|
||||
{"organization exists", "POST", "/api/v1/orgs", "user already exists [name: acme]", 422, "organization already exists"},
|
||||
{"archived label is no repository", "POST", "/api/v1/repos/alice/x/issues/1/labels", "label is archived", 422, "Gitea API returned HTTP 422 for POST /api/v1/repos/alice/x/issues/1/labels: label is archived"},
|
||||
{"run completed", "POST", "/api/v1/repos/alice/x/actions/runs/35/cancel", "run is already completed", 409, "run 35 is already completed"},
|
||||
{"run not done", "DELETE", "/api/v1/repos/alice/x/actions/runs/37", "this workflow run is not done", 400, "run 37 has not finished"},
|
||||
{"workflow disabled", "POST", "/api/v1/repos/alice/x/actions/workflows/nightly.yaml/dispatches", "workflow is disabled", 403, "workflow nightly.yaml is disabled"},
|
||||
|
||||
Reference in new issue
Block a user