mirror of
https://github.com/rclone/rclone.git
synced 2024-11-26 02:09:55 +08:00
vfs: add test for 0 length files read in the way mount does
This commit is contained in:
parent
0be14120e4
commit
0386d22cc9
|
@ -2,6 +2,7 @@ package vfs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -286,3 +287,32 @@ func TestWriteFileModTimeWithOpenWriters(t *testing.T) {
|
||||||
assert.Equal(t, info.ModTime().Unix(), mtime.Unix())
|
assert.Equal(t, info.ModTime().Unix(), mtime.Unix())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFileZeroLength(t *testing.T) {
|
||||||
|
r := fstest.NewRun(t)
|
||||||
|
defer r.Finalise()
|
||||||
|
vfs, fh := writeHandleCreate(t, r)
|
||||||
|
|
||||||
|
// Close the file without writing to it
|
||||||
|
err := fh.Close()
|
||||||
|
if errors.Cause(err) == fs.ErrorCantUploadEmptyFiles {
|
||||||
|
t.Logf("skipping test: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// read the 0 length file back in using ReadAt into a buffer
|
||||||
|
// this simulates what mount does
|
||||||
|
rd, err := vfs.OpenFile("file1", os.O_RDONLY, 0)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
buf := make([]byte, 1024)
|
||||||
|
n, err := rd.ReadAt(buf, 0)
|
||||||
|
if err != io.EOF {
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
assert.Equal(t, 0, n)
|
||||||
|
|
||||||
|
err = rd.Close()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user