aboutsummaryrefslogtreecommitdiffstats
path: root/utils/fs
diff options
context:
space:
mode:
authorMáximo Cuadros <mcuadros@gmail.com>2016-11-20 12:25:10 +0100
committerMáximo Cuadros <mcuadros@gmail.com>2016-11-20 12:25:10 +0100
commit32c610c0000b7af5c85e69306853636a77f2168b (patch)
tree04f552cc2776fda80a938c9e1a69a5f8a403e6f6 /utils/fs
parent2e60c554dbe56eed3e9a503d03fed01b459d029a (diff)
downloadgo-git-32c610c0000b7af5c85e69306853636a77f2168b.tar.gz
utils: fs, memory fix read offset
Diffstat (limited to 'utils/fs')
-rw-r--r--utils/fs/memory/memory.go2
-rw-r--r--utils/fs/test/fs_suite.go22
2 files changed, 23 insertions, 1 deletions
diff --git a/utils/fs/memory/memory.go b/utils/fs/memory/memory.go
index 398ac35..54dd497 100644
--- a/utils/fs/memory/memory.go
+++ b/utils/fs/memory/memory.go
@@ -40,6 +40,7 @@ func (fs *Memory) Open(filename string) (fs.File, error) {
func (fs *Memory) OpenFile(filename string, flag int, perm os.FileMode) (fs.File, error) {
fullpath := fs.Join(fs.base, filename)
f, ok := fs.s.files[fullpath]
+
if !ok && !isCreate(flag) {
return nil, os.ErrNotExist
}
@@ -194,7 +195,6 @@ func (f *file) Read(b []byte) (int, error) {
return 0, err
}
- f.position += int64(n)
return n, err
}
diff --git a/utils/fs/test/fs_suite.go b/utils/fs/test/fs_suite.go
index 01d6112..91b2be5 100644
--- a/utils/fs/test/fs_suite.go
+++ b/utils/fs/test/fs_suite.go
@@ -8,6 +8,8 @@ import (
"strings"
"testing"
+ "bytes"
+
. "gopkg.in/check.v1"
. "gopkg.in/src-d/go-git.v4/utils/fs"
)
@@ -455,3 +457,23 @@ func (s *FilesystemSuite) TestReadAtOnReadOnly(c *C) {
c.Assert(string(b), Equals, "cde")
c.Assert(f.Close(), IsNil)
}
+
+func (s *FilesystemSuite) TestReadWriteLargeFile(c *C) {
+ f, err := s.Fs.Create("foo")
+ c.Assert(err, IsNil)
+
+ size := 1 << 20
+
+ n, err := f.Write(bytes.Repeat([]byte("F"), size))
+ c.Assert(err, IsNil)
+ c.Assert(n, Equals, size)
+
+ err = f.Close()
+ c.Assert(err, IsNil)
+
+ f, err = s.Fs.Open("foo")
+ c.Assert(err, IsNil)
+ b, err := ioutil.ReadAll(f)
+ c.Assert(err, IsNil)
+ c.Assert(len(b), Equals, size)
+}