aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing/memory_test.go
diff options
context:
space:
mode:
authorMáximo Cuadros <mcuadros@gmail.com>2020-07-10 06:16:33 +0200
committerGitHub <noreply@github.com>2020-07-10 06:16:33 +0200
commit58ac8636795fa45f6dbb3dcd6f3c3ebb01da8627 (patch)
treee6115028814e950d7c9cbe86cd997c390c47b3ca /plumbing/memory_test.go
parentee580ee459d4eac1c434203cc264523acfae724a (diff)
parentd0d47c3781674db571b18df0544f66d93decf342 (diff)
downloadgo-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.go28
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{}