| 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()) |
| } |
| } |