From bad7672dccc4a747d00cddd303f5f6dbbc734159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slav=20Pidgorny=20=F0=9F=87=BA=F0=9F=87=A6?= Date: Mon, 18 May 2026 10:20:57 +1000 Subject: [PATCH 1/2] ADD GetParentIssue function --- github/sub_issue.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/github/sub_issue.go b/github/sub_issue.go index ae966dade19..f56980f89a3 100644 --- a/github/sub_issue.go +++ b/github/sub_issue.go @@ -138,3 +138,24 @@ func (s *SubIssueService) Reprioritize(ctx context.Context, owner, repo string, return si, resp, nil } + +// GetParentIssue gets the parent issue of a sub-issue. +// +// GitHub API docs: https://docs.github.com/rest/issues/sub-issues?apiVersion=2022-11-28#get-parent-issue +// +//meta:operation GET /repos/{owner}/{repo}/issues/{issue_number}/parent +func (s *SubIssueService) GetParentIssue(ctx context.Context, owner, repo string, subIssueNumber int64) (*Issue, *Response, error) { + u := fmt.Sprintf("repos/%v/%v/issues/%v/parent", owner, repo, subIssueNumber) + req, err := s.client.NewRequest(ctx, "GET", u, nil) + if err != nil { + return nil, nil, err + } + + var parentIssue *Issue + resp, err := s.client.Do(req, &parentIssue) + if err != nil { + return nil, resp, err + } + + return parentIssue, resp, nil +} From 76ba22113b9d6e483994527291bed470b74ee41c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slav=20Pidgorny=20=F0=9F=87=BA=F0=9F=87=A6?= Date: Mon, 18 May 2026 10:44:33 +1000 Subject: [PATCH 2/2] =?UTF-8?q?ADD=20test=20for=20GetParentIssue=20It's=20?= =?UTF-8?q?a=20simple=20function,=20but=20need=20to=20maintain=20test=20co?= =?UTF-8?q?verage.=20I=20usually=20start=20with=20tests,=20but=20not=20thi?= =?UTF-8?q?s=20time=20=F0=9F=98=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- github/sub_issue_test.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/github/sub_issue_test.go b/github/sub_issue_test.go index fd3c2784f52..faeea077d6e 100644 --- a/github/sub_issue_test.go +++ b/github/sub_issue_test.go @@ -156,3 +156,33 @@ func TestSubIssuesService_Reprioritize(t *testing.T) { return resp, err }) } + +func TestSubIssuesService_GetParentIssue(t *testing.T) { + t.Parallel() + client, mux, _ := setup(t) + + mux.HandleFunc("/repos/o/r/issues/42/parent", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + fmt.Fprint(w, `{"id":1, "number":1}`) + }) + + ctx := t.Context() + got, _, err := client.SubIssue.GetParentIssue(ctx, "o", "r", 42) + if err != nil { + t.Errorf("SubIssues.GetParentIssue returned error: %v", err) + } + + want := &Issue{Number: Ptr(1), ID: Ptr(int64(1))} + if !cmp.Equal(got, want) { + t.Errorf("SubIssues.GetParentIssue = %+v, want %+v", got, want) + } + + const methodName = "GetParentIssue" + testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { + got, resp, err := client.SubIssue.GetParentIssue(ctx, "o", "r", 42) + if got != nil { + t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) + } + return resp, err + }) +}