github.com/wasilibs/wazerox@v0.0.0-20240124024944-4923be63ab5f/internal/testing/fs/fs.go (about) 1 package testfs 2 3 import "io/fs" 4 5 // compile-time check to ensure File implements fs.File 6 var _ fs.File = &File{} 7 8 // compile-time check to ensure FS implements fs.FS 9 var _ fs.FS = &FS{} 10 11 // FS emulates fs.FS. Note: the path (map key) cannot begin with "/"! 12 type FS map[string]*File 13 14 // Open implements the same method as documented on fs.FS, except it doesn't 15 // validate the path. 16 func (f FS) Open(name string) (fs.File, error) { 17 if file, ok := f[name]; !ok { 18 return nil, &fs.PathError{Op: "open", Path: name, Err: fs.ErrNotExist} 19 } else { 20 return file, nil 21 } 22 } 23 24 type File struct{ CloseErr error } 25 26 func (f *File) Close() error { return f.CloseErr } 27 func (f *File) Stat() (fs.FileInfo, error) { return nil, nil } 28 func (f *File) Read(_ []byte) (int, error) { return 0, nil } 29 func (f *File) Seek(_ int64, _ int) (int64, error) { return 0, nil }