From 34ca62660e3b0ab9edab2ddd97e5e607780274d3 Mon Sep 17 00:00:00 2001 From: rtweed Date: Mon, 26 Feb 2024 12:18:59 +0000 Subject: [PATCH] Use a better solution for bools, and update all usage of them Signed-off-by: rtweed --- cloud/filter.go | 2 +- cloud/issue.go | 14 ++++---- cloud/issue_test.go | 3 +- cloud/jira_test.go | 2 +- onpremise/.config/dlv/config.yml | 55 ++++++++++++++++++++++++++++++++ onpremise/filter.go | 2 +- onpremise/issue.go | 16 +++++----- onpremise/issue_test.go | 4 +-- 8 files changed, 77 insertions(+), 21 deletions(-) create mode 100644 onpremise/.config/dlv/config.yml diff --git a/cloud/filter.go b/cloud/filter.go index 69bfab8f..56c3b688 100644 --- a/cloud/filter.go +++ b/cloud/filter.go @@ -37,7 +37,7 @@ type Filter struct { // GetMyFiltersQueryOptions specifies the optional parameters for the Get My Filters method type GetMyFiltersQueryOptions struct { - IncludeFavourites bool `url:"includeFavourites,omitempty"` + IncludeFavourites *bool `url:"includeFavourites,omitempty"` Expand string `url:"expand,omitempty"` } diff --git a/cloud/issue.go b/cloud/issue.go index 234d08f4..f1d7ad09 100644 --- a/cloud/issue.go +++ b/cloud/issue.go @@ -31,9 +31,9 @@ type IssueService service // UpdateQueryOptions specifies the optional parameters to the Edit issue type UpdateQueryOptions struct { - NotifyUsers bool `url:"notifyUsers"` // can't be omitted as this means it's omitted when false which isn't desired as this defaults to true - OverrideScreenSecurity bool `url:"overrideScreenSecurity,omitempty"` - OverrideEditableFlag bool `url:"overrideEditableFlag,omitempty"` + NotifyUsers *bool `url:"notifyUsers,omitempty"` + OverrideScreenSecurity *bool `url:"overrideScreenSecurity,omitempty"` + OverrideEditableFlag *bool `url:"overrideEditableFlag,omitempty"` } // Issue represents a Jira issue. @@ -545,8 +545,8 @@ type GetQueryOptions struct { // Properties is the list of properties to return for the issue. By default no properties are returned. Properties string `url:"properties,omitempty"` // FieldsByKeys if true then fields in issues will be referenced by keys instead of ids - FieldsByKeys bool `url:"fieldsByKeys,omitempty"` - UpdateHistory bool `url:"updateHistory,omitempty"` + FieldsByKeys *bool `url:"fieldsByKeys,omitempty"` + UpdateHistory *bool `url:"updateHistory,omitempty"` ProjectKeys string `url:"projectKeys,omitempty"` } @@ -559,12 +559,12 @@ type GetWorklogsQueryOptions struct { } type AddWorklogQueryOptions struct { - NotifyUsers bool `url:"notifyUsers"` // can't be omitted as this means it's omitted when false which isn't desired as this defaults to true + NotifyUsers *bool `url:"notifyUsers",omitempty` AdjustEstimate string `url:"adjustEstimate,omitempty"` NewEstimate string `url:"newEstimate,omitempty"` ReduceBy string `url:"reduceBy,omitempty"` Expand string `url:"expand,omitempty"` - OverrideEditableFlag bool `url:"overrideEditableFlag,omitempty"` + OverrideEditableFlag *bool `url:"overrideEditableFlag,omitempty"` } // CustomFields represents custom fields of Jira diff --git a/cloud/issue_test.go b/cloud/issue_test.go index cb6c144f..2f9326ad 100644 --- a/cloud/issue_test.go +++ b/cloud/issue_test.go @@ -192,7 +192,8 @@ func TestIssueService_UpdateIssueWithOptions(t *testing.T) { i := make(map[string]interface{}) fields := make(map[string]interface{}) i["fields"] = fields - resp, err := testClient.Issue.client.Issue.UpdateIssueWithOptions(context.Background(), jID, i, &UpdateQueryOptions{NotifyUsers: false}) + + resp, err := testClient.Issue.client.Issue.UpdateIssueWithOptions(context.Background(), jID, i, &UpdateQueryOptions{NotifyUsers: Bool(true)}) if resp == nil { t.Error("Expected resp. resp is nil") } diff --git a/cloud/jira_test.go b/cloud/jira_test.go index b6f0c748..12e4fc82 100644 --- a/cloud/jira_test.go +++ b/cloud/jira_test.go @@ -74,7 +74,7 @@ func testRequestParams(t *testing.T, r *http.Request, want map[string]string) { } func Test_addOptions(t *testing.T) { - v, err := addOptions("rest/api/2/issue/123", &UpdateQueryOptions{NotifyUsers: false}) + v, err := addOptions("rest/api/2/issue/123", &UpdateQueryOptions{NotifyUsers: Bool(false)}) if err != nil { t.Errorf("Expected no error. Got: %+v", err) } diff --git a/onpremise/.config/dlv/config.yml b/onpremise/.config/dlv/config.yml new file mode 100644 index 00000000..e4ac2712 --- /dev/null +++ b/onpremise/.config/dlv/config.yml @@ -0,0 +1,55 @@ +# Configuration file for the delve debugger. + +# This is the default configuration file. Available options are provided, but disabled. +# Delete the leading hash mark to enable an item. + +# Uncomment the following line and set your preferred ANSI color for source +# line numbers in the (list) command. The default is 34 (dark blue). See +# https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit +# source-list-line-color: "\x1b[34m" + +# Uncomment the following lines to change the colors used by syntax highlighting. +# source-list-keyword-color: "\x1b[0m" +# source-list-string-color: "\x1b[92m" +# source-list-number-color: "\x1b[0m" +# source-list-comment-color: "\x1b[95m" +# source-list-arrow-color: "\x1b[93m" +# source-list-tab-color: "\x1b[90m" + +# Uncomment to change what is printed instead of '\t'. +# tab: "... " + +# Uncomment to change the number of lines printed above and below cursor when +# listing source code. +# source-list-line-count: 5 + +# Provided aliases will be added to the default aliases for a given command. +aliases: + # command: ["alias1", "alias2"] + +# Define sources path substitution rules. Can be used to rewrite a source path stored +# in program's debug information, if the sources were moved to a different place +# between compilation and debugging. +# Note that substitution rules will not be used for paths passed to "break" and "trace" +# commands. +# See also Documentation/cli/substitutepath.md. +substitute-path: + # - {from: path, to: path} + +# Maximum number of elements loaded from an array. +# max-array-values: 64 + +# Maximum loaded string length. +# max-string-len: 64 + +# Output evaluation. +# max-variable-recurse: 1 + +# Uncomment the following line to make the whatis command also print the DWARF location expression of its argument. +# show-location-expr: true + +# Allow user to specify output syntax flavor of assembly, one of this list "intel"(default), "gnu", "go". +# disassemble-flavor: intel + +# List of directories to use when searching for separate debug info files. +debug-info-directories: ["/usr/lib/debug/.build-id"] diff --git a/onpremise/filter.go b/onpremise/filter.go index 8876f26b..c91d6415 100644 --- a/onpremise/filter.go +++ b/onpremise/filter.go @@ -37,7 +37,7 @@ type Filter struct { // GetMyFiltersQueryOptions specifies the optional parameters for the Get My Filters method type GetMyFiltersQueryOptions struct { - IncludeFavourites bool `url:"includeFavourites,omitempty"` + IncludeFavourites *bool `url:"includeFavourites,omitempty"` Expand string `url:"expand,omitempty"` } diff --git a/onpremise/issue.go b/onpremise/issue.go index d304ff15..90b3bdf2 100644 --- a/onpremise/issue.go +++ b/onpremise/issue.go @@ -31,9 +31,9 @@ type IssueService service // UpdateQueryOptions specifies the optional parameters to the Edit issue type UpdateQueryOptions struct { - NotifyUsers bool `url:"notifyUsers"` // can't be omitted as this means it's omitted when false which isn't desired as this defaults to true - OverrideScreenSecurity bool `url:"overrideScreenSecurity,omitempty"` - OverrideEditableFlag bool `url:"overrideEditableFlag,omitempty"` + NotifyUsers *bool `url:"notifyUsers,omitempty"` + OverrideScreenSecurity *bool `url:"overrideScreenSecurity,omitempty"` + OverrideEditableFlag *bool `url:"overrideEditableFlag,omitempty"` } // Issue represents a Jira issue. @@ -544,8 +544,8 @@ type GetQueryOptions struct { // Properties is the list of properties to return for the issue. By default no properties are returned. Properties string `url:"properties,omitempty"` // FieldsByKeys if true then fields in issues will be referenced by keys instead of ids - FieldsByKeys bool `url:"fieldsByKeys,omitempty"` - UpdateHistory bool `url:"updateHistory,omitempty"` + FieldsByKeys *bool `url:"fieldsByKeys,omitempty"` + UpdateHistory *bool `url:"updateHistory,omitempty"` ProjectKeys string `url:"projectKeys,omitempty"` } @@ -558,12 +558,12 @@ type GetWorklogsQueryOptions struct { } type AddWorklogQueryOptions struct { - NotifyUsers bool `url:"notifyUsers,omitempty"` + NotifyUsers *bool `url:"notifyUsers,omitempty"` AdjustEstimate string `url:"adjustEstimate,omitempty"` NewEstimate string `url:"newEstimate,omitempty"` ReduceBy string `url:"reduceBy,omitempty"` Expand string `url:"expand,omitempty"` - OverrideEditableFlag bool `url:"overrideEditableFlag,omitempty"` + OverrideEditableFlag *bool `url:"overrideEditableFlag,omitempty"` } // CustomFields represents custom fields of Jira @@ -839,7 +839,7 @@ func (s *IssueService) Create(ctx context.Context, issue *Issue) (*Issue, *Respo // This double check effort is done for v2 - Remove this two lines if this is completed. func (s *IssueService) Update(ctx context.Context, issue *Issue, opts *UpdateQueryOptions) (*Issue, *Response, error) { apiEndpoint := fmt.Sprintf("rest/api/2/issue/%v", issue.Key) - url, err := addOptions(apiEndpoint, *opts) + url, err := addOptions(apiEndpoint, opts) if err != nil { return nil, nil, err } diff --git a/onpremise/issue_test.go b/onpremise/issue_test.go index 441701c1..9d713423 100644 --- a/onpremise/issue_test.go +++ b/onpremise/issue_test.go @@ -172,7 +172,7 @@ func TestIssueService_Update_with_false_opts(t *testing.T) { Description: "example bug report", }, } - issue, _, err := testClient.Issue.Update(context.Background(), i, &UpdateQueryOptions{NotifyUsers: false}) + issue, _, err := testClient.Issue.Update(context.Background(), i, &UpdateQueryOptions{NotifyUsers: Bool(false)}) if issue == nil { t.Error("Expected issue. Issue is nil") } @@ -199,7 +199,7 @@ func TestIssueService_Update_with_multiple_opts(t *testing.T) { Description: "example bug report", }, } - issue, _, err := testClient.Issue.Update(context.Background(), i, &UpdateQueryOptions{NotifyUsers: false, OverrideScreenSecurity: true}) + issue, _, err := testClient.Issue.Update(context.Background(), i, &UpdateQueryOptions{NotifyUsers: Bool(false), OverrideScreenSecurity: Bool(true)}) if issue == nil { t.Error("Expected issue. Issue is nil") }