aboutsummaryrefslogtreecommitdiff
path: root/src/testing
diff options
context:
space:
mode:
Diffstat (limited to 'src/testing')
-rw-r--r--src/testing/fstest/mapfs.go4
-rw-r--r--src/testing/fstest/mapfs_test.go28
-rw-r--r--src/testing/testing.go9
3 files changed, 39 insertions, 2 deletions
diff --git a/src/testing/fstest/mapfs.go b/src/testing/fstest/mapfs.go
index 9fef2f4696..056ef133fa 100644
--- a/src/testing/fstest/mapfs.go
+++ b/src/testing/fstest/mapfs.go
@@ -66,7 +66,9 @@ func (fsys MapFS) Open(name string) (fs.File, error) {
for fname, f := range fsys {
i := strings.Index(fname, "/")
if i < 0 {
- list = append(list, mapFileInfo{fname, f})
+ if fname != "." {
+ list = append(list, mapFileInfo{fname, f})
+ }
} else {
need[fname[:i]] = true
}
diff --git a/src/testing/fstest/mapfs_test.go b/src/testing/fstest/mapfs_test.go
index 2abedd6735..c8d29283b2 100644
--- a/src/testing/fstest/mapfs_test.go
+++ b/src/testing/fstest/mapfs_test.go
@@ -5,6 +5,9 @@
package fstest
import (
+ "fmt"
+ "io/fs"
+ "strings"
"testing"
)
@@ -17,3 +20,28 @@ func TestMapFS(t *testing.T) {
t.Fatal(err)
}
}
+
+func TestMapFSChmodDot(t *testing.T) {
+ m := MapFS{
+ "a/b.txt": &MapFile{Mode: 0666},
+ ".": &MapFile{Mode: 0777 | fs.ModeDir},
+ }
+ buf := new(strings.Builder)
+ fs.WalkDir(m, ".", func(path string, d fs.DirEntry, err error) error {
+ fi, err := d.Info()
+ if err != nil {
+ return err
+ }
+ fmt.Fprintf(buf, "%s: %v\n", path, fi.Mode())
+ return nil
+ })
+ want := `
+.: drwxrwxrwx
+a: d---------
+a/b.txt: -rw-rw-rw-
+`[1:]
+ got := buf.String()
+ if want != got {
+ t.Errorf("MapFS modes want:\n%s\ngot:\n%s\n", want, got)
+ }
+}
diff --git a/src/testing/testing.go b/src/testing/testing.go
index 7f78a7caf8..be21d643fd 100644
--- a/src/testing/testing.go
+++ b/src/testing/testing.go
@@ -277,6 +277,8 @@
// os.Exit(m.Run())
// }
//
+// TestMain is a low-level primitive and should not be necessary for casual
+// testing needs, where ordinary test functions suffice.
package testing
import (
@@ -714,6 +716,7 @@ type TB interface {
Log(args ...interface{})
Logf(format string, args ...interface{})
Name() string
+ Setenv(key, value string)
Skip(args ...interface{})
SkipNow()
Skipf(format string, args ...interface{})
@@ -747,7 +750,11 @@ type T struct {
func (c *common) private() {}
-// Name returns the name of the running test or benchmark.
+// Name returns the name of the running (sub-) test or benchmark.
+//
+// The name will include the name of the test along with the names of
+// any nested sub-tests. If two sibling sub-tests have the same name,
+// Name will append a suffix to guarantee the returned name is unique.
func (c *common) Name() string {
return c.name
}