-
-
Notifications
You must be signed in to change notification settings - Fork 13
/
input.go
39 lines (33 loc) 路 793 Bytes
/
input.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package input
import (
"bytes"
"io"
"io/fs"
"os"
)
func NewMockFile(data string, mode fs.FileMode) *MockFile {
return &MockFile{
Reader: bytes.NewBufferString(data),
Size: int64(len(data)),
Mode: mode,
}
}
type MockFile struct {
Reader io.Reader
Mode fs.FileMode
Size int64
InputRead bool
}
func (m *MockFile) Stat() (fs.FileInfo, error) { return &mockFileInfo{size: m.Size, mode: m.Mode}, nil }
func (m *MockFile) Close() error { return nil }
func (m *MockFile) Read(buf []byte) (int, error) {
m.InputRead = true
return m.Reader.Read(buf)
}
type mockFileInfo struct {
fs.FileInfo
size int64
mode fs.FileMode
}
func (fi *mockFileInfo) Mode() os.FileMode { return fi.mode }
func (fi *mockFileInfo) Size() int64 { return fi.size }