diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2020-10-09 11:49:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-09 11:49:30 +0200 |
commit | 97741e72346716fd90e534a1b9bd9f7643cd0c80 (patch) | |
tree | c82068cb9957a5d23c3a3238be8bc69b8fe4d86d | |
parent | b5b59f5fc9f9c0cd3ad1329c814b6a0d8126e675 (diff) | |
parent | 9d7bd4d4bded83428a39dda358eef19e98e42f23 (diff) | |
download | go-git-97741e72346716fd90e534a1b9bd9f7643cd0c80.tar.gz |
Merge pull request #162 from yabberyabber/fetch-errorv5.2.0
Fetch should return a unique error type when ref not found
-rw-r--r-- | remote.go | 15 | ||||
-rw-r--r-- | remote_test.go | 2 |
2 files changed, 16 insertions, 1 deletions
@@ -32,6 +32,19 @@ var ( ErrExactSHA1NotSupported = errors.New("server does not support exact SHA1 refspec") ) +type NoMatchingRefSpecError struct { + refSpec config.RefSpec +} + +func (e NoMatchingRefSpecError) Error() string { + return fmt.Sprintf("couldn't find remote ref %q", e.refSpec.Src()) +} + +func (e NoMatchingRefSpecError) Is(target error) bool { + _, ok := target.(NoMatchingRefSpecError) + return ok +} + const ( // This describes the maximum number of commits to walk when // computing the haves to send to a server, for each ref in the @@ -751,7 +764,7 @@ func doCalculateRefs( }) if !matched && !s.IsWildcard() { - return fmt.Errorf("couldn't find remote ref %q", s.Src()) + return NoMatchingRefSpecError{refSpec: s} } return err diff --git a/remote_test.go b/remote_test.go index c6ea9ea..3446f1a 100644 --- a/remote_test.go +++ b/remote_test.go @@ -3,6 +3,7 @@ package git import ( "bytes" "context" + "errors" "io" "io/ioutil" "os" @@ -145,6 +146,7 @@ func (s *RemoteSuite) TestFetchNonExistantReference(c *C) { }) c.Assert(err, ErrorMatches, "couldn't find remote ref.*") + c.Assert(errors.Is(err, NoMatchingRefSpecError{}), Equals, true) } func (s *RemoteSuite) TestFetchContext(c *C) { |