Skip to content

Commit 5194256

Browse files
Louis ShawnBagToad
authored andcommitted
fix(issue list): reject pull request-only search qualifiers
1 parent 628dea6 commit 5194256

2 files changed

Lines changed: 26 additions & 0 deletions

File tree

pkg/cmd/issue/list/http.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@ package list
22

33
import (
44
"fmt"
5+
"regexp"
56

67
"github.com/cli/cli/v2/api"
78
fd "github.com/cli/cli/v2/internal/featuredetection"
89
"github.com/cli/cli/v2/internal/ghrepo"
910
prShared "github.com/cli/cli/v2/pkg/cmd/pr/shared"
1011
)
1112

13+
var pullRequestSearchQualifierRE = regexp.MustCompile(`(?i)\b(?:is|type):(?:pr|pull-?request)\b`)
14+
1215
func listIssues(client *api.Client, repo ghrepo.Interface, filters prShared.FilterOptions, limit int) (*api.IssuesAndTotalCount, error) {
1316
var states []string
1417
switch filters.State {
@@ -114,6 +117,10 @@ loop:
114117
}
115118

116119
func searchIssues(client *api.Client, detector fd.Detector, repo ghrepo.Interface, filters prShared.FilterOptions, limit int) (*api.IssuesAndTotalCount, error) {
120+
if pullRequestSearchQualifierRE.MatchString(filters.Search) {
121+
return nil, fmt.Errorf("cannot use pull request search qualifiers with `gh issue list`; use `gh pr list` instead")
122+
}
123+
117124
// TODO advancedIssueSearchCleanup
118125
// We won't need feature detection when GHES 3.17 support ends, since
119126
// the advanced issue search is the only available search backend for

pkg/cmd/issue/list/http_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,3 +214,22 @@ func TestSearchIssuesAndAdvancedSearch(t *testing.T) {
214214
})
215215
}
216216
}
217+
218+
func TestSearchIssues_rejectsPullRequestQualifiers(t *testing.T) {
219+
reg := &httpmock.Registry{}
220+
defer reg.Verify(t)
221+
222+
httpClient := &http.Client{Transport: reg}
223+
client := api.NewClientFromHTTP(httpClient)
224+
225+
_, err := searchIssues(
226+
client,
227+
fd.AdvancedIssueSearchSupportedAsOnlyBackend(),
228+
ghrepo.New("OWNER", "REPO"),
229+
prShared.FilterOptions{Search: "is:pr"},
230+
30,
231+
)
232+
233+
assert.EqualError(t, err, "cannot use pull request search qualifiers with `gh issue list`; use `gh pr list` instead")
234+
assert.Len(t, reg.Requests, 0)
235+
}

0 commit comments

Comments
 (0)