MCPcopy Create free account
hub / github.com/rclone/rclone / TestFileOpenReadUnknownSize

Function TestFileOpenReadUnknownSize

vfs/file_test.go:183–229  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

181}
182
183func TestFileOpenReadUnknownSize(t *testing.T) {
184 var (
185 contents = []byte("file contents")
186 remote = "file.txt"
187 ctx = context.Background()
188 )
189
190 // create a mock object which returns size -1
191 o := mockobject.New(remote).WithContent(contents, mockobject.SeekModeNone)
192 o.SetUnknownSize(true)
193 assert.Equal(t, int64(-1), o.Size())
194
195 // add it to a mock fs
196 fMock, err := mockfs.NewFs(context.Background(), "test", "root", nil)
197 require.NoError(t, err)
198 f := fMock.(*mockfs.Fs)
199 f.AddObject(o)
200 testObj, err := f.NewObject(ctx, remote)
201 require.NoError(t, err)
202 assert.Equal(t, int64(-1), testObj.Size())
203
204 // create a VFS from that mockfs
205 vfs := New(context.Background(), f, nil)
206 defer cleanupVFS(t, vfs)
207
208 // find the file
209 node, err := vfs.Stat(remote)
210 require.NoError(t, err)
211 require.True(t, node.IsFile())
212 file := node.(*File)
213
214 // open it
215 fd, err := file.openRead()
216 require.NoError(t, err)
217 assert.Equal(t, int64(0), fd.Size())
218
219 // check the contents are not empty even though size is empty
220 gotContents, err := io.ReadAll(fd)
221 require.NoError(t, err)
222 assert.Equal(t, contents, gotContents)
223 t.Logf("gotContents = %q", gotContents)
224
225 // check that file size has been updated
226 assert.Equal(t, int64(len(contents)), fd.Size())
227
228 require.NoError(t, fd.Close())
229}
230
231func TestFileOpenWrite(t *testing.T) {
232 _, vfs, file, _ := fileCreate(t, vfscommon.CacheModeOff)

Callers

nothing calls this directly

Calls 15

SizeMethod · 0.95
NewFunction · 0.92
NewFsFunction · 0.92
cleanupVFSFunction · 0.85
WithContentMethod · 0.80
SetUnknownSizeMethod · 0.80
openReadMethod · 0.80
LogfMethod · 0.80
NewFunction · 0.70
SizeMethod · 0.65
NewObjectMethod · 0.65
StatMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…