MCPcopy
hub / github.com/rclone/rclone / TestDirHandleReaddir

Function TestDirHandleReaddir

vfs/dir_handle_test.go:39–91  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

37}
38
39func TestDirHandleReaddir(t *testing.T) {
40 r, vfs := newTestVFS(t)
41
42 file1 := r.WriteObject(context.Background(), "dir/file1", "file1 contents", t1)
43 file2 := r.WriteObject(context.Background(), "dir/file2", "file2- contents", t2)
44 file3 := r.WriteObject(context.Background(), "dir/subdir/file3", "file3-- contents", t3)
45 r.CheckRemoteItems(t, file1, file2, file3)
46
47 node, err := vfs.Stat("dir")
48 require.NoError(t, err)
49 dir := node.(*Dir)
50
51 // Read in one chunk
52 fh, err := dir.Open(os.O_RDONLY)
53 require.NoError(t, err)
54
55 fis, err := fh.Readdir(-1)
56 require.NoError(t, err)
57 require.Equal(t, 3, len(fis))
58 assert.Equal(t, "file1", fis[0].Name())
59 assert.Equal(t, "file2", fis[1].Name())
60 assert.Equal(t, "subdir", fis[2].Name())
61 assert.False(t, fis[0].IsDir())
62 assert.False(t, fis[1].IsDir())
63 assert.True(t, fis[2].IsDir())
64
65 require.NoError(t, fh.Close())
66
67 // Read in multiple chunks
68 fh, err = dir.Open(os.O_RDONLY)
69 require.NoError(t, err)
70
71 fis, err = fh.Readdir(2)
72 require.NoError(t, err)
73 require.Equal(t, 2, len(fis))
74 assert.Equal(t, "file1", fis[0].Name())
75 assert.Equal(t, "file2", fis[1].Name())
76 assert.False(t, fis[0].IsDir())
77 assert.False(t, fis[1].IsDir())
78
79 fis, err = fh.Readdir(2)
80 require.NoError(t, err)
81 require.Equal(t, 1, len(fis))
82 assert.Equal(t, "subdir", fis[0].Name())
83 assert.True(t, fis[0].IsDir())
84
85 fis, err = fh.Readdir(2)
86 assert.Equal(t, io.EOF, err)
87 require.Equal(t, 0, len(fis))
88
89 require.NoError(t, fh.Close())
90
91}
92
93func TestDirHandleReaddirnames(t *testing.T) {
94 _, _, dir, _ := dirCreate(t)

Callers

nothing calls this directly

Calls 10

newTestVFSFunction · 0.85
WriteObjectMethod · 0.80
CheckRemoteItemsMethod · 0.80
StatMethod · 0.65
OpenMethod · 0.65
ReaddirMethod · 0.65
NameMethod · 0.65
CloseMethod · 0.65
EqualMethod · 0.45
IsDirMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…