48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.0 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())
 | 
						|
	}
 | 
						|
}
 |