From 83c86802db0fb7d08f9ea9cbf055d9af041d2550 Mon Sep 17 00:00:00 2001 From: JamBalaya56562 Date: Fri, 24 Jul 2026 18:28:47 +0900 Subject: [PATCH 1/4] refactor!: Pass `PullRequestReviewDismissalRequest` by value message is required by the dismiss-a-review endpoint, so `Message` becomes a non-pointer string without omitempty, and `PullRequestsService.DismissReview` now takes the request body by value. The type is removed from the .golangci.yml allowlist. BREAKING CHANGE: PullRequestReviewDismissalRequest.Message is now a non-pointer string, and PullRequestsService.DismissReview now takes the request body by value. --- .golangci.yml | 1 - github/github-accessors.go | 6 +++--- github/github-accessors_test.go | 5 +---- github/github-stringify_test.go | 2 +- github/pulls_reviews.go | 4 ++-- github/pulls_reviews_test.go | 4 ++-- github/strings_test.go | 2 +- 7 files changed, 10 insertions(+), 14 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index a1a689e41dc..22832ae0bea 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -243,7 +243,6 @@ linters: - PublishCodespaceOptions - PullRequestBranchUpdateOptions - PullRequestComment - - PullRequestReviewDismissalRequest - PullRequestReviewRequest - PullRequestReviewsEnforcementUpdate - Repository diff --git a/github/github-accessors.go b/github/github-accessors.go index 138f841b5f2..2b9f56d6055 100644 --- a/github/github-accessors.go +++ b/github/github-accessors.go @@ -31558,12 +31558,12 @@ func (p *PullRequestReviewCommentEvent) GetSender() *User { return p.Sender } -// GetMessage returns the Message field if it's non-nil, zero value otherwise. +// GetMessage returns the Message field. func (p *PullRequestReviewDismissalRequest) GetMessage() string { - if p == nil || p.Message == nil { + if p == nil { return "" } - return *p.Message + return p.Message } // GetAction returns the Action field if it's non-nil, zero value otherwise. diff --git a/github/github-accessors_test.go b/github/github-accessors_test.go index 186fc7254db..04e4bd32437 100644 --- a/github/github-accessors_test.go +++ b/github/github-accessors_test.go @@ -39649,10 +39649,7 @@ func TestPullRequestReviewCommentEvent_GetSender(tt *testing.T) { func TestPullRequestReviewDismissalRequest_GetMessage(tt *testing.T) { tt.Parallel() - var zeroValue string - p := &PullRequestReviewDismissalRequest{Message: &zeroValue} - p.GetMessage() - p = &PullRequestReviewDismissalRequest{} + p := &PullRequestReviewDismissalRequest{} p.GetMessage() p = nil p.GetMessage() diff --git a/github/github-stringify_test.go b/github/github-stringify_test.go index b45ec8fa3ab..e9faf8304fc 100644 --- a/github/github-stringify_test.go +++ b/github/github-stringify_test.go @@ -1728,7 +1728,7 @@ func TestPullRequestReview_String(t *testing.T) { func TestPullRequestReviewDismissalRequest_String(t *testing.T) { t.Parallel() v := PullRequestReviewDismissalRequest{ - Message: Ptr(""), + Message: "", } want := `github.PullRequestReviewDismissalRequest{Message:""}` if got := v.String(); got != want { diff --git a/github/pulls_reviews.go b/github/pulls_reviews.go index 9e299fd11e8..6af814ab94b 100644 --- a/github/pulls_reviews.go +++ b/github/pulls_reviews.go @@ -95,7 +95,7 @@ func (r *PullRequestReviewRequest) isComfortFadePreview() (bool, error) { // PullRequestReviewDismissalRequest represents a request to dismiss a review. type PullRequestReviewDismissalRequest struct { - Message *string `json:"message,omitempty"` + Message string `json:"message"` } func (r PullRequestReviewDismissalRequest) String() string { @@ -315,7 +315,7 @@ func (s *PullRequestsService) SubmitReview(ctx context.Context, owner, repo stri // GitHub API docs: https://docs.github.com/rest/pulls/reviews?apiVersion=2022-11-28#dismiss-a-review-for-a-pull-request // //meta:operation PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals -func (s *PullRequestsService) DismissReview(ctx context.Context, owner, repo string, number int, reviewID int64, body *PullRequestReviewDismissalRequest) (*PullRequestReview, *Response, error) { +func (s *PullRequestsService) DismissReview(ctx context.Context, owner, repo string, number int, reviewID int64, body PullRequestReviewDismissalRequest) (*PullRequestReview, *Response, error) { u := fmt.Sprintf("repos/%v/%v/pulls/%v/reviews/%v/dismissals", owner, repo, number, reviewID) req, err := s.client.NewRequest(ctx, "PUT", u, body) diff --git a/github/pulls_reviews_test.go b/github/pulls_reviews_test.go index 2b4639ce501..93b40dfbb20 100644 --- a/github/pulls_reviews_test.go +++ b/github/pulls_reviews_test.go @@ -562,7 +562,7 @@ func TestPullRequestsService_DismissReview(t *testing.T) { t.Parallel() client, mux, _ := setup(t) - input := &PullRequestReviewDismissalRequest{Message: Ptr("m")} + input := PullRequestReviewDismissalRequest{Message: "m"} mux.HandleFunc("/repos/o/r/pulls/1/reviews/1/dismissals", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, "PUT") @@ -601,6 +601,6 @@ func TestPullRequestsService_DismissReview_invalidOwner(t *testing.T) { client, _, _ := setup(t) ctx := t.Context() - _, _, err := client.PullRequests.DismissReview(ctx, "%", "r", 1, 1, &PullRequestReviewDismissalRequest{}) + _, _, err := client.PullRequests.DismissReview(ctx, "%", "r", 1, 1, PullRequestReviewDismissalRequest{}) testURLParseError(t, err) } diff --git a/github/strings_test.go b/github/strings_test.go index ff5a8f06c6a..e3cddf809ca 100644 --- a/github/strings_test.go +++ b/github/strings_test.go @@ -202,7 +202,7 @@ func TestString(t *testing.T) { {PullRequestReview{ID: Ptr(int64(1))}, `github.PullRequestReview{ID:1}`}, {DraftReviewComment{Position: Ptr(1)}, `github.DraftReviewComment{Position:1}`}, {PullRequestReviewRequest{Body: Ptr("r")}, `github.PullRequestReviewRequest{Body:"r"}`}, - {PullRequestReviewDismissalRequest{Message: Ptr("r")}, `github.PullRequestReviewDismissalRequest{Message:"r"}`}, + {PullRequestReviewDismissalRequest{Message: "r"}, `github.PullRequestReviewDismissalRequest{Message:"r"}`}, {HeadCommit{SHA: Ptr("s")}, `github.HeadCommit{SHA:"s"}`}, {PushEvent{PushID: Ptr(int64(1))}, `github.PushEvent{PushID:1}`}, {Reference{Ref: Ptr("r")}, `github.Reference{Ref:"r"}`}, From 8ed3f9c1becb63a8eb8f750187aa56e4b41f161c Mon Sep 17 00:00:00 2001 From: JamBalaya56562 Date: Sat, 25 Jul 2026 06:35:04 +0900 Subject: [PATCH 2/4] refactor!: Rename `PullRequestReviewDismissalRequest` to `PullRequestDismissReviewRequest` Aligns the request type name with the PullRequestsService.DismissReview method name, as suggested in review. --- github/github-accessors.go | 16 ++++++++-------- github/github-accessors_test.go | 16 ++++++++-------- github/github-stringify_test.go | 22 +++++++++++----------- github/pulls_reviews.go | 8 ++++---- github/pulls_reviews_test.go | 4 ++-- github/strings_test.go | 2 +- 6 files changed, 34 insertions(+), 34 deletions(-) diff --git a/github/github-accessors.go b/github/github-accessors.go index 2b9f56d6055..ea9737f1db3 100644 --- a/github/github-accessors.go +++ b/github/github-accessors.go @@ -31126,6 +31126,14 @@ func (p *PullRequestComment) GetUser() *User { return p.User } +// GetMessage returns the Message field. +func (p *PullRequestDismissReviewRequest) GetMessage() string { + if p == nil { + return "" + } + return p.Message +} + // GetAction returns the Action field if it's non-nil, zero value otherwise. func (p *PullRequestEvent) GetAction() string { if p == nil || p.Action == nil { @@ -31558,14 +31566,6 @@ func (p *PullRequestReviewCommentEvent) GetSender() *User { return p.Sender } -// GetMessage returns the Message field. -func (p *PullRequestReviewDismissalRequest) GetMessage() string { - if p == nil { - return "" - } - return p.Message -} - // GetAction returns the Action field if it's non-nil, zero value otherwise. func (p *PullRequestReviewEvent) GetAction() string { if p == nil || p.Action == nil { diff --git a/github/github-accessors_test.go b/github/github-accessors_test.go index 04e4bd32437..fc8852c972e 100644 --- a/github/github-accessors_test.go +++ b/github/github-accessors_test.go @@ -39146,6 +39146,14 @@ func TestPullRequestComment_GetUser(tt *testing.T) { p.GetUser() } +func TestPullRequestDismissReviewRequest_GetMessage(tt *testing.T) { + tt.Parallel() + p := &PullRequestDismissReviewRequest{} + p.GetMessage() + p = nil + p.GetMessage() +} + func TestPullRequestEvent_GetAction(tt *testing.T) { tt.Parallel() var zeroValue string @@ -39647,14 +39655,6 @@ func TestPullRequestReviewCommentEvent_GetSender(tt *testing.T) { p.GetSender() } -func TestPullRequestReviewDismissalRequest_GetMessage(tt *testing.T) { - tt.Parallel() - p := &PullRequestReviewDismissalRequest{} - p.GetMessage() - p = nil - p.GetMessage() -} - func TestPullRequestReviewEvent_GetAction(tt *testing.T) { tt.Parallel() var zeroValue string diff --git a/github/github-stringify_test.go b/github/github-stringify_test.go index e9faf8304fc..a1441eda06c 100644 --- a/github/github-stringify_test.go +++ b/github/github-stringify_test.go @@ -1705,6 +1705,17 @@ func TestPullRequestComment_String(t *testing.T) { } } +func TestPullRequestDismissReviewRequest_String(t *testing.T) { + t.Parallel() + v := PullRequestDismissReviewRequest{ + Message: "", + } + want := `github.PullRequestDismissReviewRequest{Message:""}` + if got := v.String(); got != want { + t.Errorf("PullRequestDismissReviewRequest.String = %v, want %v", got, want) + } +} + func TestPullRequestReview_String(t *testing.T) { t.Parallel() v := PullRequestReview{ @@ -1725,17 +1736,6 @@ func TestPullRequestReview_String(t *testing.T) { } } -func TestPullRequestReviewDismissalRequest_String(t *testing.T) { - t.Parallel() - v := PullRequestReviewDismissalRequest{ - Message: "", - } - want := `github.PullRequestReviewDismissalRequest{Message:""}` - if got := v.String(); got != want { - t.Errorf("PullRequestReviewDismissalRequest.String = %v, want %v", got, want) - } -} - func TestPullRequestReviewRequest_String(t *testing.T) { t.Parallel() v := PullRequestReviewRequest{ diff --git a/github/pulls_reviews.go b/github/pulls_reviews.go index 6af814ab94b..7a5f2c49b52 100644 --- a/github/pulls_reviews.go +++ b/github/pulls_reviews.go @@ -93,12 +93,12 @@ func (r *PullRequestReviewRequest) isComfortFadePreview() (bool, error) { return false, nil } -// PullRequestReviewDismissalRequest represents a request to dismiss a review. -type PullRequestReviewDismissalRequest struct { +// PullRequestDismissReviewRequest represents a request to dismiss a review. +type PullRequestDismissReviewRequest struct { Message string `json:"message"` } -func (r PullRequestReviewDismissalRequest) String() string { +func (r PullRequestDismissReviewRequest) String() string { return Stringify(r) } @@ -315,7 +315,7 @@ func (s *PullRequestsService) SubmitReview(ctx context.Context, owner, repo stri // GitHub API docs: https://docs.github.com/rest/pulls/reviews?apiVersion=2022-11-28#dismiss-a-review-for-a-pull-request // //meta:operation PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals -func (s *PullRequestsService) DismissReview(ctx context.Context, owner, repo string, number int, reviewID int64, body PullRequestReviewDismissalRequest) (*PullRequestReview, *Response, error) { +func (s *PullRequestsService) DismissReview(ctx context.Context, owner, repo string, number int, reviewID int64, body PullRequestDismissReviewRequest) (*PullRequestReview, *Response, error) { u := fmt.Sprintf("repos/%v/%v/pulls/%v/reviews/%v/dismissals", owner, repo, number, reviewID) req, err := s.client.NewRequest(ctx, "PUT", u, body) diff --git a/github/pulls_reviews_test.go b/github/pulls_reviews_test.go index 93b40dfbb20..71894eef5c6 100644 --- a/github/pulls_reviews_test.go +++ b/github/pulls_reviews_test.go @@ -562,7 +562,7 @@ func TestPullRequestsService_DismissReview(t *testing.T) { t.Parallel() client, mux, _ := setup(t) - input := PullRequestReviewDismissalRequest{Message: "m"} + input := PullRequestDismissReviewRequest{Message: "m"} mux.HandleFunc("/repos/o/r/pulls/1/reviews/1/dismissals", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, "PUT") @@ -601,6 +601,6 @@ func TestPullRequestsService_DismissReview_invalidOwner(t *testing.T) { client, _, _ := setup(t) ctx := t.Context() - _, _, err := client.PullRequests.DismissReview(ctx, "%", "r", 1, 1, PullRequestReviewDismissalRequest{}) + _, _, err := client.PullRequests.DismissReview(ctx, "%", "r", 1, 1, PullRequestDismissReviewRequest{}) testURLParseError(t, err) } diff --git a/github/strings_test.go b/github/strings_test.go index e3cddf809ca..83392f1f80e 100644 --- a/github/strings_test.go +++ b/github/strings_test.go @@ -202,7 +202,7 @@ func TestString(t *testing.T) { {PullRequestReview{ID: Ptr(int64(1))}, `github.PullRequestReview{ID:1}`}, {DraftReviewComment{Position: Ptr(1)}, `github.DraftReviewComment{Position:1}`}, {PullRequestReviewRequest{Body: Ptr("r")}, `github.PullRequestReviewRequest{Body:"r"}`}, - {PullRequestReviewDismissalRequest{Message: "r"}, `github.PullRequestReviewDismissalRequest{Message:"r"}`}, + {PullRequestDismissReviewRequest{Message: "r"}, `github.PullRequestDismissReviewRequest{Message:"r"}`}, {HeadCommit{SHA: Ptr("s")}, `github.HeadCommit{SHA:"s"}`}, {PushEvent{PushID: Ptr(int64(1))}, `github.PushEvent{PushID:1}`}, {Reference{Ref: Ptr("r")}, `github.Reference{Ref:"r"}`}, From 7575960d85d04e6a7da5b732a8f345650fac7084 Mon Sep 17 00:00:00 2001 From: JamBalaya56562 Date: Sat, 25 Jul 2026 06:37:33 +0900 Subject: [PATCH 3/4] feat: Add `Event` field to `PullRequestDismissReviewRequest` The dismiss-a-review endpoint accepts an optional event parameter (can be "DISMISS") that was missing from the Go struct. --- github/github-accessors.go | 8 ++++++++ github/github-accessors_test.go | 11 +++++++++++ github/github-stringify_test.go | 3 ++- github/pulls_reviews.go | 3 ++- github/pulls_reviews_test.go | 2 +- 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/github/github-accessors.go b/github/github-accessors.go index ea9737f1db3..de572c092c1 100644 --- a/github/github-accessors.go +++ b/github/github-accessors.go @@ -31126,6 +31126,14 @@ func (p *PullRequestComment) GetUser() *User { return p.User } +// GetEvent returns the Event field if it's non-nil, zero value otherwise. +func (p *PullRequestDismissReviewRequest) GetEvent() string { + if p == nil || p.Event == nil { + return "" + } + return *p.Event +} + // GetMessage returns the Message field. func (p *PullRequestDismissReviewRequest) GetMessage() string { if p == nil { diff --git a/github/github-accessors_test.go b/github/github-accessors_test.go index fc8852c972e..7cbc5592945 100644 --- a/github/github-accessors_test.go +++ b/github/github-accessors_test.go @@ -39146,6 +39146,17 @@ func TestPullRequestComment_GetUser(tt *testing.T) { p.GetUser() } +func TestPullRequestDismissReviewRequest_GetEvent(tt *testing.T) { + tt.Parallel() + var zeroValue string + p := &PullRequestDismissReviewRequest{Event: &zeroValue} + p.GetEvent() + p = &PullRequestDismissReviewRequest{} + p.GetEvent() + p = nil + p.GetEvent() +} + func TestPullRequestDismissReviewRequest_GetMessage(tt *testing.T) { tt.Parallel() p := &PullRequestDismissReviewRequest{} diff --git a/github/github-stringify_test.go b/github/github-stringify_test.go index a1441eda06c..6e59c44da8a 100644 --- a/github/github-stringify_test.go +++ b/github/github-stringify_test.go @@ -1709,8 +1709,9 @@ func TestPullRequestDismissReviewRequest_String(t *testing.T) { t.Parallel() v := PullRequestDismissReviewRequest{ Message: "", + Event: Ptr(""), } - want := `github.PullRequestDismissReviewRequest{Message:""}` + want := `github.PullRequestDismissReviewRequest{Message:"", Event:""}` if got := v.String(); got != want { t.Errorf("PullRequestDismissReviewRequest.String = %v, want %v", got, want) } diff --git a/github/pulls_reviews.go b/github/pulls_reviews.go index 7a5f2c49b52..ca187afe9bc 100644 --- a/github/pulls_reviews.go +++ b/github/pulls_reviews.go @@ -95,7 +95,8 @@ func (r *PullRequestReviewRequest) isComfortFadePreview() (bool, error) { // PullRequestDismissReviewRequest represents a request to dismiss a review. type PullRequestDismissReviewRequest struct { - Message string `json:"message"` + Message string `json:"message"` + Event *string `json:"event,omitempty"` } func (r PullRequestDismissReviewRequest) String() string { diff --git a/github/pulls_reviews_test.go b/github/pulls_reviews_test.go index 71894eef5c6..303d9cb629b 100644 --- a/github/pulls_reviews_test.go +++ b/github/pulls_reviews_test.go @@ -562,7 +562,7 @@ func TestPullRequestsService_DismissReview(t *testing.T) { t.Parallel() client, mux, _ := setup(t) - input := PullRequestDismissReviewRequest{Message: "m"} + input := PullRequestDismissReviewRequest{Message: "m", Event: Ptr("DISMISS")} mux.HandleFunc("/repos/o/r/pulls/1/reviews/1/dismissals", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, "PUT") From 8383de19378bfa69806ad531898693cd4f33fc6b Mon Sep 17 00:00:00 2001 From: JamBalaya56562 Date: Sat, 25 Jul 2026 06:47:38 +0900 Subject: [PATCH 4/4] refactor!: Pass `SubmitReview` request body by value via new `PullRequestSubmitReviewRequest` SubmitReview reused *PullRequestReviewRequest, whose node_id, commit_id and comments fields are not part of the submit-a-review request schema. The new PullRequestSubmitReviewRequest models that schema exactly: event is required and becomes a non-pointer string, body stays optional. CreateReview keeps the shared PullRequestReviewRequest, so its allowlist entry remains. --- github/github-accessors.go | 16 ++++++++++++++++ github/github-accessors_test.go | 19 +++++++++++++++++++ github/pulls_reviews.go | 8 +++++++- github/pulls_reviews_test.go | 6 +++--- 4 files changed, 45 insertions(+), 4 deletions(-) diff --git a/github/github-accessors.go b/github/github-accessors.go index de572c092c1..8c304d0b947 100644 --- a/github/github-accessors.go +++ b/github/github-accessors.go @@ -31934,6 +31934,22 @@ func (p *PullRequestRuleParameters) GetRequireLastPushApproval() bool { return p.RequireLastPushApproval } +// GetBody returns the Body field if it's non-nil, zero value otherwise. +func (p *PullRequestSubmitReviewRequest) GetBody() string { + if p == nil || p.Body == nil { + return "" + } + return *p.Body +} + +// GetEvent returns the Event field. +func (p *PullRequestSubmitReviewRequest) GetEvent() string { + if p == nil { + return "" + } + return p.Event +} + // GetAction returns the Action field if it's non-nil, zero value otherwise. func (p *PullRequestTargetEvent) GetAction() string { if p == nil || p.Action == nil { diff --git a/github/github-accessors_test.go b/github/github-accessors_test.go index 7cbc5592945..92b2b28a674 100644 --- a/github/github-accessors_test.go +++ b/github/github-accessors_test.go @@ -40068,6 +40068,25 @@ func TestPullRequestRuleParameters_GetRequireLastPushApproval(tt *testing.T) { p.GetRequireLastPushApproval() } +func TestPullRequestSubmitReviewRequest_GetBody(tt *testing.T) { + tt.Parallel() + var zeroValue string + p := &PullRequestSubmitReviewRequest{Body: &zeroValue} + p.GetBody() + p = &PullRequestSubmitReviewRequest{} + p.GetBody() + p = nil + p.GetBody() +} + +func TestPullRequestSubmitReviewRequest_GetEvent(tt *testing.T) { + tt.Parallel() + p := &PullRequestSubmitReviewRequest{} + p.GetEvent() + p = nil + p.GetEvent() +} + func TestPullRequestTargetEvent_GetAction(tt *testing.T) { tt.Parallel() var zeroValue string diff --git a/github/pulls_reviews.go b/github/pulls_reviews.go index ca187afe9bc..f901f32ce5e 100644 --- a/github/pulls_reviews.go +++ b/github/pulls_reviews.go @@ -103,6 +103,12 @@ func (r PullRequestDismissReviewRequest) String() string { return Stringify(r) } +// PullRequestSubmitReviewRequest represents a request to submit a review. +type PullRequestSubmitReviewRequest struct { + Body *string `json:"body,omitempty"` + Event string `json:"event"` +} + // ListReviews lists all reviews on the specified pull request. // // GitHub API docs: https://docs.github.com/rest/pulls/reviews?apiVersion=2022-11-28#list-reviews-for-a-pull-request @@ -294,7 +300,7 @@ func (s *PullRequestsService) UpdateReview(ctx context.Context, owner, repo stri // GitHub API docs: https://docs.github.com/rest/pulls/reviews?apiVersion=2022-11-28#submit-a-review-for-a-pull-request // //meta:operation POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events -func (s *PullRequestsService) SubmitReview(ctx context.Context, owner, repo string, number int, reviewID int64, body *PullRequestReviewRequest) (*PullRequestReview, *Response, error) { +func (s *PullRequestsService) SubmitReview(ctx context.Context, owner, repo string, number int, reviewID int64, body PullRequestSubmitReviewRequest) (*PullRequestReview, *Response, error) { u := fmt.Sprintf("repos/%v/%v/pulls/%v/reviews/%v/events", owner, repo, number, reviewID) req, err := s.client.NewRequest(ctx, "POST", u, body) diff --git a/github/pulls_reviews_test.go b/github/pulls_reviews_test.go index 303d9cb629b..8133bc5ca14 100644 --- a/github/pulls_reviews_test.go +++ b/github/pulls_reviews_test.go @@ -512,9 +512,9 @@ func TestPullRequestsService_SubmitReview(t *testing.T) { t.Parallel() client, mux, _ := setup(t) - input := &PullRequestReviewRequest{ + input := PullRequestSubmitReviewRequest{ Body: Ptr("b"), - Event: Ptr("APPROVE"), + Event: "APPROVE", } mux.HandleFunc("/repos/o/r/pulls/1/reviews/1/events", func(w http.ResponseWriter, r *http.Request) { @@ -554,7 +554,7 @@ func TestPullRequestsService_SubmitReview_invalidOwner(t *testing.T) { client, _, _ := setup(t) ctx := t.Context() - _, _, err := client.PullRequests.SubmitReview(ctx, "%", "r", 1, 1, &PullRequestReviewRequest{}) + _, _, err := client.PullRequests.SubmitReview(ctx, "%", "r", 1, 1, PullRequestSubmitReviewRequest{}) testURLParseError(t, err) }