diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2016-11-20 12:25:10 +0100 |
---|---|---|
committer | Máximo Cuadros <mcuadros@gmail.com> | 2016-11-20 12:25:10 +0100 |
commit | 32c610c0000b7af5c85e69306853636a77f2168b (patch) | |
tree | 04f552cc2776fda80a938c9e1a69a5f8a403e6f6 /utils/fs | |
parent | 2e60c554dbe56eed3e9a503d03fed01b459d029a (diff) | |
download | go-git-32c610c0000b7af5c85e69306853636a77f2168b.tar.gz |
utils: fs, memory fix read offset
Diffstat (limited to 'utils/fs')
-rw-r--r-- | utils/fs/memory/memory.go | 2 | ||||
-rw-r--r-- | utils/fs/test/fs_suite.go | 22 |
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) +} |