mirror of
https://github.com/restic/restic.git
synced 2025-08-12 11:47:43 +00:00
Moves files
This commit is contained in:
118
internal/mock/backend.go
Normal file
118
internal/mock/backend.go
Normal file
@@ -0,0 +1,118 @@
|
||||
package mock
|
||||
|
||||
import (
|
||||
"context"
|
||||
"io"
|
||||
"restic"
|
||||
|
||||
"restic/errors"
|
||||
)
|
||||
|
||||
// Backend implements a mock backend.
|
||||
type Backend struct {
|
||||
CloseFn func() error
|
||||
IsNotExistFn func(err error) bool
|
||||
SaveFn func(ctx context.Context, h restic.Handle, rd io.Reader) error
|
||||
LoadFn func(ctx context.Context, h restic.Handle, length int, offset int64) (io.ReadCloser, error)
|
||||
StatFn func(ctx context.Context, h restic.Handle) (restic.FileInfo, error)
|
||||
ListFn func(ctx context.Context, t restic.FileType) <-chan string
|
||||
RemoveFn func(ctx context.Context, h restic.Handle) error
|
||||
TestFn func(ctx context.Context, h restic.Handle) (bool, error)
|
||||
DeleteFn func(ctx context.Context) error
|
||||
LocationFn func() string
|
||||
}
|
||||
|
||||
// Close the backend.
|
||||
func (m *Backend) Close() error {
|
||||
if m.CloseFn == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return m.CloseFn()
|
||||
}
|
||||
|
||||
// Location returns a location string.
|
||||
func (m *Backend) Location() string {
|
||||
if m.LocationFn == nil {
|
||||
return ""
|
||||
}
|
||||
|
||||
return m.LocationFn()
|
||||
}
|
||||
|
||||
// IsNotExist returns true if the error is caused by a missing file.
|
||||
func (m *Backend) IsNotExist(err error) bool {
|
||||
if m.IsNotExistFn == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
return m.IsNotExistFn(err)
|
||||
}
|
||||
|
||||
// Save data in the backend.
|
||||
func (m *Backend) Save(ctx context.Context, h restic.Handle, rd io.Reader) error {
|
||||
if m.SaveFn == nil {
|
||||
return errors.New("not implemented")
|
||||
}
|
||||
|
||||
return m.SaveFn(ctx, h, rd)
|
||||
}
|
||||
|
||||
// Load loads data from the backend.
|
||||
func (m *Backend) Load(ctx context.Context, h restic.Handle, length int, offset int64) (io.ReadCloser, error) {
|
||||
if m.LoadFn == nil {
|
||||
return nil, errors.New("not implemented")
|
||||
}
|
||||
|
||||
return m.LoadFn(ctx, h, length, offset)
|
||||
}
|
||||
|
||||
// Stat an object in the backend.
|
||||
func (m *Backend) Stat(ctx context.Context, h restic.Handle) (restic.FileInfo, error) {
|
||||
if m.StatFn == nil {
|
||||
return restic.FileInfo{}, errors.New("not implemented")
|
||||
}
|
||||
|
||||
return m.StatFn(ctx, h)
|
||||
}
|
||||
|
||||
// List items of type t.
|
||||
func (m *Backend) List(ctx context.Context, t restic.FileType) <-chan string {
|
||||
if m.ListFn == nil {
|
||||
ch := make(chan string)
|
||||
close(ch)
|
||||
return ch
|
||||
}
|
||||
|
||||
return m.ListFn(ctx, t)
|
||||
}
|
||||
|
||||
// Remove data from the backend.
|
||||
func (m *Backend) Remove(ctx context.Context, h restic.Handle) error {
|
||||
if m.RemoveFn == nil {
|
||||
return errors.New("not implemented")
|
||||
}
|
||||
|
||||
return m.RemoveFn(ctx, h)
|
||||
}
|
||||
|
||||
// Test for the existence of a specific item.
|
||||
func (m *Backend) Test(ctx context.Context, h restic.Handle) (bool, error) {
|
||||
if m.TestFn == nil {
|
||||
return false, errors.New("not implemented")
|
||||
}
|
||||
|
||||
return m.TestFn(ctx, h)
|
||||
}
|
||||
|
||||
// Delete all data.
|
||||
func (m *Backend) Delete(ctx context.Context) error {
|
||||
if m.DeleteFn == nil {
|
||||
return errors.New("not implemented")
|
||||
}
|
||||
|
||||
return m.DeleteFn(ctx)
|
||||
}
|
||||
|
||||
// Make sure that Backend implements the backend interface.
|
||||
var _ restic.Backend = &Backend{}
|
141
internal/mock/repository.go
Normal file
141
internal/mock/repository.go
Normal file
@@ -0,0 +1,141 @@
|
||||
package mock
|
||||
|
||||
import (
|
||||
"restic"
|
||||
"restic/crypto"
|
||||
)
|
||||
|
||||
// Repository implements a mock Repository.
|
||||
type Repository struct {
|
||||
BackendFn func() restic.Backend
|
||||
|
||||
KeyFn func() *crypto.Key
|
||||
|
||||
SetIndexFn func(restic.Index)
|
||||
|
||||
IndexFn func() restic.Index
|
||||
SaveFullIndexFn func() error
|
||||
SaveIndexFn func() error
|
||||
LoadIndexFn func() error
|
||||
|
||||
ConfigFn func() restic.Config
|
||||
|
||||
LookupBlobSizeFn func(restic.ID, restic.BlobType) (uint, error)
|
||||
|
||||
ListFn func(restic.FileType, <-chan struct{}) <-chan restic.ID
|
||||
ListPackFn func(restic.ID) ([]restic.Blob, int64, error)
|
||||
|
||||
FlushFn func() error
|
||||
|
||||
SaveUnpackedFn func(restic.FileType, []byte) (restic.ID, error)
|
||||
SaveJSONUnpackedFn func(restic.FileType, interface{}) (restic.ID, error)
|
||||
|
||||
LoadJSONUnpackedFn func(restic.FileType, restic.ID, interface{}) error
|
||||
LoadAndDecryptFn func(restic.FileType, restic.ID) ([]byte, error)
|
||||
|
||||
LoadBlobFn func(restic.BlobType, restic.ID, []byte) (int, error)
|
||||
SaveBlobFn func(restic.BlobType, []byte, restic.ID) (restic.ID, error)
|
||||
|
||||
LoadTreeFn func(restic.ID) (*restic.Tree, error)
|
||||
SaveTreeFn func(t *restic.Tree) (restic.ID, error)
|
||||
}
|
||||
|
||||
// Backend is a stub method.
|
||||
func (repo Repository) Backend() restic.Backend {
|
||||
return repo.BackendFn()
|
||||
}
|
||||
|
||||
// Key is a stub method.
|
||||
func (repo Repository) Key() *crypto.Key {
|
||||
return repo.KeyFn()
|
||||
}
|
||||
|
||||
// SetIndex is a stub method.
|
||||
func (repo Repository) SetIndex(idx restic.Index) {
|
||||
repo.SetIndexFn(idx)
|
||||
}
|
||||
|
||||
// Index is a stub method.
|
||||
func (repo Repository) Index() restic.Index {
|
||||
return repo.IndexFn()
|
||||
}
|
||||
|
||||
// SaveFullIndex is a stub method.
|
||||
func (repo Repository) SaveFullIndex() error {
|
||||
return repo.SaveFullIndexFn()
|
||||
}
|
||||
|
||||
// SaveIndex is a stub method.
|
||||
func (repo Repository) SaveIndex() error {
|
||||
return repo.SaveIndexFn()
|
||||
}
|
||||
|
||||
// LoadIndex is a stub method.
|
||||
func (repo Repository) LoadIndex() error {
|
||||
return repo.LoadIndexFn()
|
||||
}
|
||||
|
||||
// Config is a stub method.
|
||||
func (repo Repository) Config() restic.Config {
|
||||
return repo.ConfigFn()
|
||||
}
|
||||
|
||||
// LookupBlobSize is a stub method.
|
||||
func (repo Repository) LookupBlobSize(id restic.ID, t restic.BlobType) (uint, error) {
|
||||
return repo.LookupBlobSizeFn(id, t)
|
||||
}
|
||||
|
||||
// List is a stub method.
|
||||
func (repo Repository) List(t restic.FileType, done <-chan struct{}) <-chan restic.ID {
|
||||
return repo.ListFn(t, done)
|
||||
}
|
||||
|
||||
// ListPack is a stub method.
|
||||
func (repo Repository) ListPack(id restic.ID) ([]restic.Blob, int64, error) {
|
||||
return repo.ListPackFn(id)
|
||||
}
|
||||
|
||||
// Flush is a stub method.
|
||||
func (repo Repository) Flush() error {
|
||||
return repo.FlushFn()
|
||||
}
|
||||
|
||||
// SaveUnpacked is a stub method.
|
||||
func (repo Repository) SaveUnpacked(t restic.FileType, buf []byte) (restic.ID, error) {
|
||||
return repo.SaveUnpackedFn(t, buf)
|
||||
}
|
||||
|
||||
// SaveJSONUnpacked is a stub method.
|
||||
func (repo Repository) SaveJSONUnpacked(t restic.FileType, item interface{}) (restic.ID, error) {
|
||||
return repo.SaveJSONUnpackedFn(t, item)
|
||||
}
|
||||
|
||||
// LoadJSONUnpacked is a stub method.
|
||||
func (repo Repository) LoadJSONUnpacked(t restic.FileType, id restic.ID, item interface{}) error {
|
||||
return repo.LoadJSONUnpackedFn(t, id, item)
|
||||
}
|
||||
|
||||
// LoadAndDecrypt is a stub method.
|
||||
func (repo Repository) LoadAndDecrypt(t restic.FileType, id restic.ID) ([]byte, error) {
|
||||
return repo.LoadAndDecryptFn(t, id)
|
||||
}
|
||||
|
||||
// LoadBlob is a stub method.
|
||||
func (repo Repository) LoadBlob(t restic.BlobType, id restic.ID, buf []byte) (int, error) {
|
||||
return repo.LoadBlobFn(t, id, buf)
|
||||
}
|
||||
|
||||
// SaveBlob is a stub method.
|
||||
func (repo Repository) SaveBlob(t restic.BlobType, buf []byte, id restic.ID) (restic.ID, error) {
|
||||
return repo.SaveBlobFn(t, buf, id)
|
||||
}
|
||||
|
||||
// LoadTree is a stub method.
|
||||
func (repo Repository) LoadTree(id restic.ID) (*restic.Tree, error) {
|
||||
return repo.LoadTreeFn(id)
|
||||
}
|
||||
|
||||
// SaveTree is a stub method.
|
||||
func (repo Repository) SaveTree(t *restic.Tree) (restic.ID, error) {
|
||||
return repo.SaveTreeFn(t)
|
||||
}
|
Reference in New Issue
Block a user