Move --type into the search Qualifiers
The --type filter was concatenated into ImmutableKeywords in SearchQueryBuild, which bypassed search.Query's quoting and let values that contained quotes (or extra qualifiers) corrupt the final query. Per babakks's suggestion in the review thread, model it as a regular qualifier instead. Add an IssueType field to Qualifiers tagged `qualifier:"type"` so it shares a key with the existing Type field, and rework Qualifiers.Map to honour the tag and concatenate values when multiple fields share the same key. SearchQueryBuild now drops its bespoke type:X formatting and just sets Qualifiers.IssueType, leaving the keyword/qualifier escaping to pkg/search. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
parent
6bbe6e5bac
commit
72859237e2
5 changed files with 56 additions and 27 deletions
|
|
@ -173,6 +173,32 @@ func Test_listURLWithQuery(t *testing.T) {
|
|||
want: "https://example.com/path?q=label%3A%22help+wanted%22+label%3Adocs+milestone%3A%22Codename+%5C%22What+Was+Missing%5C%22%22+state%3Aopen+type%3Apr",
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "issue type",
|
||||
args: args{
|
||||
listURL: "https://example.com/path",
|
||||
options: FilterOptions{
|
||||
Entity: "issue",
|
||||
State: "open",
|
||||
IssueType: "Bug",
|
||||
},
|
||||
},
|
||||
want: "https://example.com/path?q=state%3Aopen+type%3ABug+type%3Aissue",
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "issue type with spaces is quoted",
|
||||
args: args{
|
||||
listURL: "https://example.com/path",
|
||||
options: FilterOptions{
|
||||
Entity: "issue",
|
||||
State: "open",
|
||||
IssueType: `Hot "Spicy" Bug`,
|
||||
},
|
||||
},
|
||||
want: "https://example.com/path?q=state%3Aopen+type%3A%22Hot+%5C%22Spicy%5C%22+Bug%22+type%3Aissue",
|
||||
wantErr: false,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue