aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing
diff options
context:
space:
mode:
authorMáximo Cuadros <mcuadros@gmail.com>2017-02-24 09:45:57 +0100
committerGitHub <noreply@github.com>2017-02-24 09:45:57 +0100
commitee3d4c180ce664a4639ecf36d45a47ee1f8b6ee0 (patch)
treef30330cb0b87a7ae1f45b8a4f4585ae3d8c9ff2f /plumbing
parent294d6f4e6f1b60eb0f53515c1fb64b86db21d241 (diff)
parent3a34ab97f6a382f1b28c3cfb49b3725c60b33956 (diff)
downloadgo-git-ee3d4c180ce664a4639ecf36d45a47ee1f8b6ee0.tar.gz
Merge pull request #286 from ajnavarro/fix/reference-iterator
plumbing/storer: referenceIterator now returns the error if any
Diffstat (limited to 'plumbing')
-rw-r--r--plumbing/storer/reference.go2
-rw-r--r--plumbing/storer/reference_test.go24
2 files changed, 25 insertions, 1 deletions
diff --git a/plumbing/storer/reference.go b/plumbing/storer/reference.go
index 692fe88..6c2de0d 100644
--- a/plumbing/storer/reference.go
+++ b/plumbing/storer/reference.go
@@ -70,7 +70,7 @@ func (iter *ReferenceSliceIter) ForEach(cb func(*plumbing.Reference) error) erro
return nil
}
- return nil
+ return err
}
}
diff --git a/plumbing/storer/reference_test.go b/plumbing/storer/reference_test.go
index f698820..ff7bd68 100644
--- a/plumbing/storer/reference_test.go
+++ b/plumbing/storer/reference_test.go
@@ -1,6 +1,7 @@
package storer
import (
+ "errors"
"io"
. "gopkg.in/check.v1"
@@ -48,6 +49,29 @@ func (s *ReferenceSuite) TestReferenceSliceIterForEach(c *C) {
c.Assert(count, Equals, 2)
}
+func (s *ReferenceSuite) TestReferenceSliceIterForEachError(c *C) {
+ slice := []*plumbing.Reference{
+ plumbing.NewReferenceFromStrings("foo", "foo"),
+ plumbing.NewReferenceFromStrings("bar", "bar"),
+ }
+
+ i := NewReferenceSliceIter(slice)
+ var count int
+ exampleErr := errors.New("SOME ERROR")
+ err := i.ForEach(func(r *plumbing.Reference) error {
+ c.Assert(r == slice[count], Equals, true)
+ count++
+ if count == 2 {
+ return exampleErr
+ }
+
+ return nil
+ })
+
+ c.Assert(err, Equals, exampleErr)
+ c.Assert(count, Equals, 2)
+}
+
func (s *ReferenceSuite) TestReferenceSliceIterForEachStop(c *C) {
slice := []*plumbing.Reference{
plumbing.NewReferenceFromStrings("foo", "foo"),