return nil, ErrInvalid
}
_, _, infos, err := f.readdir(n, readdirFileInfo)
+ if infos == nil {
+ // Readdir has historically always returned a non-nil empty slice, never nil,
+ // even on error (except misuse with nil receiver above).
+ // Keep it that way to avoid breaking overly sensitive callers.
+ infos = []FileInfo{}
+ }
return infos, err
}
return nil, ErrInvalid
}
names, _, _, err = f.readdir(n, readdirName)
+ if names == nil {
+ // Readdirnames has historically always returned a non-nil empty slice, never nil,
+ // even on error (except misuse with nil receiver above).
+ // Keep it that way to avoid breaking overly sensitive callers.
+ names = []string{}
+ }
return names, err
}
return nil, ErrInvalid
}
_, dirents, _, err := f.readdir(n, readdirDirEntry)
+ if dirents == nil {
+ // Match Readdir and Readdirnames: don't return nil slices.
+ dirents = []DirEntry{}
+ }
return dirents, err
}
t.Error("could not find", m)
}
}
+ if s == nil {
+ t.Error("Readdirnames returned nil instead of empty slice")
+ }
}
func testReaddir(dir string, contents []string, t *testing.T) {
t.Error("could not find", m)
}
}
+ if s == nil {
+ t.Error("Readdir returned nil instead of empty slice")
+ }
}
func testReadDir(dir string, contents []string, t *testing.T) {
t.Error("could not find", m)
}
}
+ if s == nil {
+ t.Error("ReadDir returned nil instead of empty slice")
+ }
}
func TestReaddirnames(t *testing.T) {
testReaddirnames(".", dot, t)
testReaddirnames(sysdir.name, sysdir.files, t)
+ testReaddirnames(t.TempDir(), nil, t)
}
func TestReaddir(t *testing.T) {
testReaddir(".", dot, t)
testReaddir(sysdir.name, sysdir.files, t)
+ testReaddir(t.TempDir(), nil, t)
}
func TestReadDir(t *testing.T) {
testReadDir(".", dot, t)
testReadDir(sysdir.name, sysdir.files, t)
+ testReadDir(t.TempDir(), nil, t)
}
func benchmarkReaddirname(path string, b *testing.B) {