94 lines
1.4 KiB
Go
94 lines
1.4 KiB
Go
package mockkopia
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"io"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/kopia/kopia/fs"
|
|
)
|
|
|
|
const (
|
|
DefaultPermissions os.FileMode = 0o777
|
|
)
|
|
|
|
type MockEntry struct {
|
|
EntryName string
|
|
EntryMode os.FileMode
|
|
EntrySize int64
|
|
EntryModTime time.Time
|
|
EntryOwner fs.OwnerInfo
|
|
EntryDevice fs.DeviceInfo
|
|
}
|
|
|
|
func (me MockEntry) Name() string {
|
|
return me.EntryName
|
|
}
|
|
|
|
func (me MockEntry) IsDir() bool {
|
|
return me.EntryMode.IsDir()
|
|
}
|
|
|
|
func (me MockEntry) Mode() os.FileMode {
|
|
return me.EntryMode
|
|
}
|
|
|
|
func (me MockEntry) ModTime() time.Time {
|
|
return me.EntryModTime
|
|
}
|
|
|
|
func (me MockEntry) Size() int64 {
|
|
return me.EntrySize
|
|
}
|
|
|
|
func (me MockEntry) Sys() any {
|
|
return nil
|
|
}
|
|
|
|
func (me MockEntry) Owner() fs.OwnerInfo {
|
|
return me.EntryOwner
|
|
}
|
|
|
|
func (me MockEntry) Device() fs.DeviceInfo {
|
|
return me.EntryDevice
|
|
}
|
|
|
|
func (me MockEntry) LocalFilesystemPath() string {
|
|
return ""
|
|
}
|
|
|
|
func (me *MockEntry) Close() {
|
|
}
|
|
|
|
type mockReader struct {
|
|
e fs.Entry
|
|
io.ReadSeeker
|
|
}
|
|
|
|
func (mr mockReader) Entry() (fs.Entry, error) {
|
|
return mr.e, nil
|
|
}
|
|
|
|
func (mr *mockReader) Close() error {
|
|
return nil
|
|
}
|
|
|
|
type MockFile struct {
|
|
fs.Entry
|
|
OpenErr error
|
|
Data []byte
|
|
}
|
|
|
|
func (mf *MockFile) Open(context.Context) (fs.Reader, error) {
|
|
if mf.OpenErr != nil {
|
|
return nil, mf.OpenErr
|
|
}
|
|
|
|
return &mockReader{
|
|
e: mf.Entry,
|
|
ReadSeeker: bytes.NewReader(mf.Data),
|
|
}, nil
|
|
}
|