feat(tools): branch_delete
This commit is contained in:
@@ -114,6 +114,15 @@ func (c *Client) ListBranches(ctx context.Context, owner, repo string, page, lim
|
||||
return branches, nil
|
||||
}
|
||||
|
||||
func (c *Client) DeleteBranch(ctx context.Context, owner, repo, branch string) error {
|
||||
p := fmt.Sprintf("/api/v1/repos/%s/%s/branches/%s", owner, repo, branch)
|
||||
body, status, err := c.DeleteJSON(ctx, p)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return MapStatus(status, body)
|
||||
}
|
||||
|
||||
// UpsertFile creates a file when args.Sha is empty (POST) or updates an existing
|
||||
// file when args.Sha is set (PUT). Gitea routes both operations by HTTP method on
|
||||
// the same /contents/{path} URL, and rejects PUT without a sha.
|
||||
|
||||
@@ -138,3 +138,29 @@ func TestUpsertFileSendsPayloadAndDecodesResult(t *testing.T) {
|
||||
assert.Equal(t, "http://example.com/p.md", result.Content.HTMLURL)
|
||||
assert.Equal(t, "abc", result.Commit.Sha)
|
||||
}
|
||||
|
||||
func TestDeleteBranch(t *testing.T) {
|
||||
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
assert.Equal(t, "/api/v1/repos/o/r/branches/feat/x", r.URL.Path)
|
||||
assert.Equal(t, http.MethodDelete, r.Method)
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}))
|
||||
defer srv.Close()
|
||||
|
||||
c := gitea.NewClient(srv.URL, "tok")
|
||||
err := c.DeleteBranch(context.Background(), "o", "r", "feat/x")
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestDeleteBranchProtected(t *testing.T) {
|
||||
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusForbidden)
|
||||
_, _ = w.Write([]byte(`{"message":"branch is protected"}`))
|
||||
}))
|
||||
defer srv.Close()
|
||||
|
||||
c := gitea.NewClient(srv.URL, "tok")
|
||||
err := c.DeleteBranch(context.Background(), "o", "r", "main")
|
||||
require.Error(t, err)
|
||||
assert.ErrorIs(t, err, gitea.ErrPermissionDenied)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user