From f0e4bbfeeb93c3c8349c8331b89140275ac88d7c Mon Sep 17 00:00:00 2001 From: Simone Gotti Date: Tue, 22 Oct 2019 10:15:20 +0200 Subject: [PATCH] gitea: use GetRepoRefs instead of GetRepoRef Looks like GetRepoRef doesn't correcly handle gitea repo refs response expecting a single entry. Instead, at least with latest gitea version, the response is always an array of refs. So use GetRepoRefs. --- internal/gitsources/gitea/gitea.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/internal/gitsources/gitea/gitea.go b/internal/gitsources/gitea/gitea.go index f1ffac6..023217d 100644 --- a/internal/gitsources/gitea/gitea.go +++ b/internal/gitsources/gitea/gitea.go @@ -81,7 +81,7 @@ func fromCommitStatus(status gitsource.CommitStatus) gtypes.StatusState { case gitsource.CommitStatusFailed: return gtypes.StatusFailure default: - panic(fmt.Errorf("unknown commit status %q", status)) + panic(errors.Errorf("unknown commit status %q", status)) } } @@ -410,12 +410,18 @@ func (c *Client) GetRef(repopath, ref string) (*gitsource.Ref, error) { return nil, err } - remoteRef, err := c.client.GetRepoRef(owner, reponame, ref) + remoteRefs, err := c.client.GetRepoRefs(owner, reponame, ref) if err != nil { return nil, err } + if len(remoteRefs) == 0 { + return nil, errors.Errorf("no ref %q for repository %q", ref, repopath) + } + if len(remoteRefs) != 1 { + return nil, errors.Errorf("no exact match found for ref %q for repository %q", ref, repopath) + } - return fromGiteaRef(remoteRef) + return fromGiteaRef(remoteRefs[0]) } func fromGiteaRef(remoteRef *gitea.Reference) (*gitsource.Ref, error) { @@ -423,7 +429,7 @@ func fromGiteaRef(remoteRef *gitea.Reference) (*gitsource.Ref, error) { switch t { case "commit": default: - return nil, fmt.Errorf("unsupported object type: %s", t) + return nil, errors.Errorf("unsupported object type: %s", t) } return &gitsource.Ref{ @@ -445,7 +451,7 @@ func (c *Client) RefType(ref string) (gitsource.RefType, string, error) { return gitsource.RefTypePullRequest, m[1], nil default: - return -1, "", fmt.Errorf("unsupported ref: %s", ref) + return -1, "", errors.Errorf("unsupported ref: %s", ref) } }