Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit ee3d4c1

Browse files
authored
Merge pull request #286 from ajnavarro/fix/reference-iterator
plumbing/storer: referenceIterator now returns the error if any
2 parents 294d6f4 + 3a34ab9 commit ee3d4c1

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

plumbing/storer/reference.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func (iter *ReferenceSliceIter) ForEach(cb func(*plumbing.Reference) error) erro
7070
return nil
7171
}
7272

73-
return nil
73+
return err
7474
}
7575
}
7676

plumbing/storer/reference_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package storer
22

33
import (
4+
"errors"
45
"io"
56

67
. "gopkg.in/check.v1"
@@ -48,6 +49,29 @@ func (s *ReferenceSuite) TestReferenceSliceIterForEach(c *C) {
4849
c.Assert(count, Equals, 2)
4950
}
5051

52+
func (s *ReferenceSuite) TestReferenceSliceIterForEachError(c *C) {
53+
slice := []*plumbing.Reference{
54+
plumbing.NewReferenceFromStrings("foo", "foo"),
55+
plumbing.NewReferenceFromStrings("bar", "bar"),
56+
}
57+
58+
i := NewReferenceSliceIter(slice)
59+
var count int
60+
exampleErr := errors.New("SOME ERROR")
61+
err := i.ForEach(func(r *plumbing.Reference) error {
62+
c.Assert(r == slice[count], Equals, true)
63+
count++
64+
if count == 2 {
65+
return exampleErr
66+
}
67+
68+
return nil
69+
})
70+
71+
c.Assert(err, Equals, exampleErr)
72+
c.Assert(count, Equals, 2)
73+
}
74+
5175
func (s *ReferenceSuite) TestReferenceSliceIterForEachStop(c *C) {
5276
slice := []*plumbing.Reference{
5377
plumbing.NewReferenceFromStrings("foo", "foo"),

0 commit comments

Comments
 (0)