diff options
author | James Ravn <james@r-vn.org> | 2018-07-05 10:50:09 +0100 |
---|---|---|
committer | James Ravn <james@r-vn.org> | 2018-07-10 10:05:04 +0100 |
commit | b304997a387a5106321fe87069a6f136d9fbd1f6 (patch) | |
tree | 2bc5aba417803c5c887ce9c21701c94eba74e920 | |
parent | fcfd239c49baee9195f7b8234f46288a29c3951c (diff) | |
download | go-git-b304997a387a5106321fe87069a6f136d9fbd1f6.tar.gz |
plumbing: object, expose ErrEntryNotFound in FindEntry. Fixes #883
FindEntry will return ErrDirNotFound if the directory doesn't exist. But
it doesn't return a public error if the entry itself is missing. This
exposes the internal error ErrEntryNotFound, so users can
programmatically check for this condition.
Signed-off-by: James Ravn <james@r-vn.org>
-rw-r--r-- | plumbing/object/tree.go | 5 | ||||
-rw-r--r-- | plumbing/object/tree_test.go | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/plumbing/object/tree.go b/plumbing/object/tree.go index 30bbcb0..7d9e90b 100644 --- a/plumbing/object/tree.go +++ b/plumbing/object/tree.go @@ -25,6 +25,7 @@ var ( ErrMaxTreeDepth = errors.New("maximum tree depth exceeded") ErrFileNotFound = errors.New("file not found") ErrDirectoryNotFound = errors.New("directory not found") + ErrEntryNotFound = errors.New("entry not found") ) // Tree is basically like a directory - it references a bunch of other trees @@ -166,8 +167,6 @@ func (t *Tree) dir(baseName string) (*Tree, error) { return tree, err } -var errEntryNotFound = errors.New("entry not found") - func (t *Tree) entry(baseName string) (*TreeEntry, error) { if t.m == nil { t.buildMap() @@ -175,7 +174,7 @@ func (t *Tree) entry(baseName string) (*TreeEntry, error) { entry, ok := t.m[baseName] if !ok { - return nil, errEntryNotFound + return nil, ErrEntryNotFound } return entry, nil diff --git a/plumbing/object/tree_test.go b/plumbing/object/tree_test.go index 3a687dd..59d5d21 100644 --- a/plumbing/object/tree_test.go +++ b/plumbing/object/tree_test.go @@ -114,6 +114,12 @@ func (s *TreeSuite) TestFindEntry(c *C) { c.Assert(e.Name, Equals, "foo.go") } +func (s *TreeSuite) TestFindEntryNotFound(c *C) { + e, err := s.Tree.FindEntry("not-found") + c.Assert(e, IsNil) + c.Assert(err, Equals, ErrEntryNotFound) +} + // Overrides returned plumbing.EncodedObject for given hash. // Otherwise, delegates to actual storer to get real object type fakeStorer struct { |