MCPcopy
hub / github.com/rclone/rclone / TestWriteFileHandleMethods

Function TestWriteFileHandleMethods

vfs/write_test.go:92–192  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

90}
91
92func TestWriteFileHandleMethods(t *testing.T) {
93 r, vfs, fh := writeHandleCreate(t)
94
95 // String
96 assert.Equal(t, "file1 (w)", fh.String())
97 assert.Equal(t, "<nil *WriteFileHandle>", (*WriteFileHandle)(nil).String())
98 assert.Equal(t, "<nil *WriteFileHandle.file>", new(WriteFileHandle).String())
99
100 // Node
101 node := fh.Node()
102 assert.Equal(t, "file1", node.Name())
103
104 // Offset #1
105 assert.Equal(t, int64(0), fh.Offset())
106 assert.Equal(t, int64(0), node.Size())
107
108 // Write (smoke test only since heavy lifting done in WriteAt)
109 n, err := fh.Write([]byte("hello"))
110 assert.NoError(t, err)
111 assert.Equal(t, 5, n)
112
113 // Offset #2
114 assert.Equal(t, int64(5), fh.Offset())
115 assert.Equal(t, int64(5), node.Size())
116
117 // Stat
118 var fi os.FileInfo
119 fi, err = fh.Stat()
120 assert.NoError(t, err)
121 assert.Equal(t, int64(5), fi.Size())
122 assert.Equal(t, "file1", fi.Name())
123
124 // Read
125 var buf = make([]byte, 16)
126 _, err = fh.Read(buf)
127 assert.Equal(t, EPERM, err)
128
129 // ReadAt
130 _, err = fh.ReadAt(buf, 0)
131 assert.Equal(t, EPERM, err)
132
133 // Sync
134 err = fh.Sync()
135 assert.NoError(t, err)
136
137 // Truncate - can only truncate where the file pointer is
138 err = fh.Truncate(5)
139 assert.NoError(t, err)
140 err = fh.Truncate(6)
141 assert.Equal(t, EPERM, err)
142
143 // Close
144 assert.NoError(t, fh.Close())
145
146 // Check double close
147 err = fh.Close()
148 assert.Equal(t, ECLOSED, err)
149

Callers

nothing calls this directly

Calls 15

SizeMethod · 0.95
NameMethod · 0.95
NewItemFunction · 0.92
writeHandleCreateFunction · 0.85
IsMethod · 0.80
checkListingFunction · 0.70
StringMethod · 0.65
NodeMethod · 0.65
NameMethod · 0.65
SizeMethod · 0.65
WriteMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…