aboutsummaryrefslogtreecommitdiff
path: root/src/testing/fstest/mapfs.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/testing/fstest/mapfs.go')
-rw-r--r--src/testing/fstest/mapfs.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/testing/fstest/mapfs.go b/src/testing/fstest/mapfs.go
index 84a943f409..e969ac2bd1 100644
--- a/src/testing/fstest/mapfs.go
+++ b/src/testing/fstest/mapfs.go
@@ -108,6 +108,18 @@ func (fsys MapFS) Open(name string) (fs.File, error) {
return &mapDir{name, mapFileInfo{elem, file}, list, 0}, nil
}
+// fsOnly is a wrapper that hides all but the fs.FS methods,
+// to avoid an infinite recursion when implementing special
+// methods in terms of helpers that would use them.
+// (In general, implementing these methods using the package fs helpers
+// is redundant and unnecessary, but having the methods may make
+// MapFS exercise more code paths when used in tests.)
+type fsOnly struct{ fs.FS }
+
+func (fsys MapFS) ReadFile(name string) ([]byte, error) {
+ return fs.ReadFile(fsOnly{fsys}, name)
+}
+
// A mapFileInfo implements fs.FileInfo and fs.DirEntry for a given map file.
type mapFileInfo struct {
name string