diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2020-07-10 06:16:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-10 06:16:33 +0200 |
commit | 58ac8636795fa45f6dbb3dcd6f3c3ebb01da8627 (patch) | |
tree | e6115028814e950d7c9cbe86cd997c390c47b3ca /plumbing/memory_test.go | |
parent | ee580ee459d4eac1c434203cc264523acfae724a (diff) | |
parent | d0d47c3781674db571b18df0544f66d93decf342 (diff) | |
download | go-git-58ac8636795fa45f6dbb3dcd6f3c3ebb01da8627.tar.gz |
Merge pull request #121 from riking/cache-seek
plumbing: memoryobject, make blob reader seekable
Diffstat (limited to 'plumbing/memory_test.go')
-rw-r--r-- | plumbing/memory_test.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/plumbing/memory_test.go b/plumbing/memory_test.go index 879ed37..2a141f4 100644 --- a/plumbing/memory_test.go +++ b/plumbing/memory_test.go @@ -1,6 +1,7 @@ package plumbing import ( + "io" "io/ioutil" . "gopkg.in/check.v1" @@ -56,6 +57,33 @@ func (s *MemoryObjectSuite) TestReader(c *C) { c.Assert(b, DeepEquals, []byte("foo")) } +func (s *MemoryObjectSuite) TestSeekableReader(c *C) { + const pageSize = 4096 + const payload = "foo" + content := make([]byte, pageSize+len(payload)) + copy(content[pageSize:], []byte(payload)) + + o := &MemoryObject{cont: content} + + reader, err := o.Reader() + c.Assert(err, IsNil) + defer func() { c.Assert(reader.Close(), IsNil) }() + + rs, ok := reader.(io.ReadSeeker) + c.Assert(ok, Equals, true) + + _, err = rs.Seek(pageSize, io.SeekStart) + c.Assert(err, IsNil) + + b, err := ioutil.ReadAll(rs) + c.Assert(err, IsNil) + c.Assert(b, DeepEquals, []byte(payload)) + + // Check that our Reader isn't also accidentally writable + _, ok = reader.(io.WriteSeeker) + c.Assert(ok, Equals, false) +} + func (s *MemoryObjectSuite) TestWriter(c *C) { o := &MemoryObject{} |