forked from TrueCloudLab/distribution
48 lines
1 KiB
Go
48 lines
1 KiB
Go
|
package driver
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
type changingFileSystem struct {
|
||
|
StorageDriver
|
||
|
fileset []string
|
||
|
keptFiles map[string]bool
|
||
|
}
|
||
|
|
||
|
func (cfs *changingFileSystem) List(ctx context.Context, path string) ([]string, error) {
|
||
|
return cfs.fileset, nil
|
||
|
}
|
||
|
func (cfs *changingFileSystem) Stat(ctx context.Context, path string) (FileInfo, error) {
|
||
|
kept, ok := cfs.keptFiles[path]
|
||
|
if ok && kept {
|
||
|
return &FileInfoInternal{
|
||
|
FileInfoFields: FileInfoFields{
|
||
|
Path: path,
|
||
|
},
|
||
|
}, nil
|
||
|
}
|
||
|
return nil, PathNotFoundError{}
|
||
|
}
|
||
|
func TestWalkFileRemoved(t *testing.T) {
|
||
|
d := &changingFileSystem{
|
||
|
fileset: []string{"zoidberg", "bender"},
|
||
|
keptFiles: map[string]bool{
|
||
|
"zoidberg": true,
|
||
|
},
|
||
|
}
|
||
|
infos := []FileInfo{}
|
||
|
err := WalkFallback(context.Background(), d, "", func(fileInfo FileInfo) error {
|
||
|
infos = append(infos, fileInfo)
|
||
|
return nil
|
||
|
})
|
||
|
if len(infos) != 1 || infos[0].Path() != "zoidberg" {
|
||
|
t.Errorf(fmt.Sprintf("unexpected path set during walk: %s", infos))
|
||
|
}
|
||
|
if err != nil {
|
||
|
t.Fatalf(err.Error())
|
||
|
}
|
||
|
}
|