From 6d1bcd107f2da909bdf92e511efa51049d0df919 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 3 Apr 2023 11:34:49 +0800 Subject: [PATCH] support error.Is for ErrUnknownVersion (#615) followup of https://gitea.com/gitea/go-sdk/pulls/612 see https://gitea.com/gitea/tea/pulls/538#issuecomment-734707 Reviewed-on: https://gitea.com/gitea/go-sdk/pulls/615 Reviewed-by: John Olheiser Reviewed-by: Lunny Xiao Co-authored-by: 6543 <6543@obermui.de> Co-committed-by: 6543 <6543@obermui.de> --- gitea/client.go | 2 +- gitea/version.go | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gitea/client.go b/gitea/client.go index 52f86ff..22f0eed 100644 --- a/gitea/client.go +++ b/gitea/client.go @@ -68,7 +68,7 @@ func NewClient(url string, options ...ClientOption) (*Client, error) { } } if err := client.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil { - if errors.As(err, &ErrUnknownVersion{}) { + if errors.Is(err, &ErrUnknownVersion{}) { return client, err } return nil, err diff --git a/gitea/version.go b/gitea/version.go index 95e84bc..e8df511 100644 --- a/gitea/version.go +++ b/gitea/version.go @@ -81,6 +81,12 @@ func (e ErrUnknownVersion) Error() string { return fmt.Sprintf("unknown version: %s", e.raw) } +func (_ ErrUnknownVersion) Is(target error) bool { + _, ok1 := target.(*ErrUnknownVersion) + _, ok2 := target.(ErrUnknownVersion) + return ok1 || ok2 +} + // checkServerVersionGreaterThanOrEqual is the canonical way in the SDK to check for versions for API compatibility reasons func (c *Client) checkServerVersionGreaterThanOrEqual(v *version.Version) error { if c.ignoreVersion { @@ -111,7 +117,7 @@ func (c *Client) loadServerVersion() (err error) { if strings.TrimSpace(raw) != "" { // Version was something, just not recognized c.serverVersion = version1_11_0 - err = ErrUnknownVersion{raw: raw} + err = &ErrUnknownVersion{raw: raw} } return }