diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2017-03-28 05:53:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-28 05:53:33 +0200 |
commit | 36c78b9d1b1eea682703fb1cbb0f4f3144354389 (patch) | |
tree | 4dcd7e9a7c466a269fc50ee43644d90238f00976 /plumbing/object | |
parent | e190c37cf51a2a320cabd81b25057859ed689a3b (diff) | |
parent | ce4ca45ab6ad1d2c2350e3fb3f91a00b000139cb (diff) | |
download | go-git-36c78b9d1b1eea682703fb1cbb0f4f3144354389.tar.gz |
Merge pull request #314 from lupine/249-fix-bufio-buffer-full
plumbing: Use ReadBytes() rather than ReadSlice()
Diffstat (limited to 'plumbing/object')
-rw-r--r-- | plumbing/object/commit.go | 2 | ||||
-rw-r--r-- | plumbing/object/commit_test.go | 17 | ||||
-rw-r--r-- | plumbing/object/tag.go | 2 | ||||
-rw-r--r-- | plumbing/object/tag_test.go | 17 |
4 files changed, 36 insertions, 2 deletions
diff --git a/plumbing/object/commit.go b/plumbing/object/commit.go index fff4f53..7507bc7 100644 --- a/plumbing/object/commit.go +++ b/plumbing/object/commit.go @@ -130,7 +130,7 @@ func (c *Commit) Decode(o plumbing.EncodedObject) (err error) { var message bool for { - line, err := r.ReadSlice('\n') + line, err := r.ReadBytes('\n') if err != nil && err != io.EOF { return err } diff --git a/plumbing/object/commit_test.go b/plumbing/object/commit_test.go index d30e1c4..8b4ee2a 100644 --- a/plumbing/object/commit_test.go +++ b/plumbing/object/commit_test.go @@ -2,6 +2,7 @@ package object import ( "io" + "strings" "time" "github.com/src-d/go-git-fixtures" @@ -167,3 +168,19 @@ func (s *SuiteCommit) TestCommitIterNext(c *C) { c.Assert(err, Equals, io.EOF) c.Assert(commit, IsNil) } + +func (s *SuiteCommit) TestLongCommitMessageSerialization(c *C) { + encoded := &plumbing.MemoryObject{} + decoded := &Commit{} + commit := *s.Commit + + longMessage := "my message: message\n\n" + strings.Repeat("test", 4096) + "\nOK" + commit.Message = longMessage + + err := commit.Encode(encoded) + c.Assert(err, IsNil) + + err = decoded.Decode(encoded) + c.Assert(err, IsNil) + c.Assert(decoded.Message, Equals, longMessage) +} diff --git a/plumbing/object/tag.go b/plumbing/object/tag.go index 2feeea7..7b091d0 100644 --- a/plumbing/object/tag.go +++ b/plumbing/object/tag.go @@ -90,7 +90,7 @@ func (t *Tag) Decode(o plumbing.EncodedObject) (err error) { r := bufio.NewReader(reader) for { - line, err := r.ReadSlice('\n') + line, err := r.ReadBytes('\n') if err != nil && err != io.EOF { return err } diff --git a/plumbing/object/tag_test.go b/plumbing/object/tag_test.go index deb961e..f121ce9 100644 --- a/plumbing/object/tag_test.go +++ b/plumbing/object/tag_test.go @@ -3,6 +3,7 @@ package object import ( "fmt" "io" + "strings" "time" "github.com/src-d/go-git-fixtures" @@ -269,3 +270,19 @@ func (s *TagSuite) TestTagToTagString(c *C) { "\n"+ "\n") } + +func (s *TagSuite) TestLongTagNameSerialization(c *C) { + encoded := &plumbing.MemoryObject{} + decoded := &Tag{} + tag := s.tag(c, plumbing.NewHash("b742a2a9fa0afcfa9a6fad080980fbc26b007c69")) + + longName := "my tag: name " + strings.Repeat("test", 4096) + " OK" + tag.Name = longName + + err := tag.Encode(encoded) + c.Assert(err, IsNil) + + err = decoded.Decode(encoded) + c.Assert(err, IsNil) + c.Assert(decoded.Name, Equals, longName) +} |