tinygo/src/os/dir_test.go
Ayke van Laethem 77ec9b6369 all: update build constraints to Go 1.17
Do it all at once in preparation for Go 1.18 support.

To make this commit, I've simply modified the `fmt-check` Makefile
target to rewrite files instead of listing the differences. So this is a
fully mechanical change, it should not have introduced any errors.
2022-02-04 07:49:46 +01:00

182 строки
4 КиБ
Go

//go:build darwin || (linux && !baremetal && !js && !wasi && !386 && !arm)
// +build darwin linux,!baremetal,!js,!wasi,!386,!arm
package os_test
import (
. "os"
"testing"
)
func testReaddirnames(dir string, contents []string, t *testing.T) {
file, err := Open(dir)
if err != nil {
t.Fatalf("open %q failed: %v", dir, err)
}
defer file.Close()
s, err2 := file.Readdirnames(-1)
if err2 != nil {
t.Fatalf("Readdirnames %q failed: %v", dir, err2)
}
for _, m := range contents {
found := false
for _, n := range s {
if n == "." || n == ".." {
t.Errorf("got %q in directory", n)
}
if !equal(m, n) {
continue
}
if found {
t.Error("present twice:", m)
}
found = true
}
if !found {
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) {
file, err := Open(dir)
if err != nil {
t.Fatalf("open %q failed: %v", dir, err)
}
defer file.Close()
s, err2 := file.Readdir(-1)
if err2 != nil {
t.Fatalf("Readdir %q failed: %v", dir, err2)
}
for _, m := range contents {
found := false
for _, n := range s {
if n.Name() == "." || n.Name() == ".." {
t.Errorf("got %q in directory", n.Name())
}
if !equal(m, n.Name()) {
continue
}
if found {
t.Error("present twice:", m)
}
found = true
}
if !found {
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) {
file, err := Open(dir)
if err != nil {
t.Fatalf("open %q failed: %v", dir, err)
}
defer file.Close()
s, err2 := file.ReadDir(-1)
if err2 != nil {
t.Fatalf("ReadDir %q failed: %v", dir, err2)
}
for _, m := range contents {
found := false
for _, n := range s {
if n.Name() == "." || n.Name() == ".." {
t.Errorf("got %q in directory", n)
}
if !equal(m, n.Name()) {
continue
}
if found {
t.Error("present twice:", m)
}
found = true
lstat, err := Lstat(dir + "/" + m)
if err != nil {
t.Fatal(err)
}
if n.IsDir() != lstat.IsDir() {
t.Errorf("%s: IsDir=%v, want %v", m, n.IsDir(), lstat.IsDir())
}
if n.Type() != lstat.Mode().Type() {
t.Errorf("%s: IsDir=%v, want %v", m, n.Type(), lstat.Mode().Type())
}
info, err := n.Info()
if err != nil {
t.Errorf("%s: Info: %v", m, err)
continue
}
if !SameFile(info, lstat) {
t.Errorf("%s: Info: SameFile(info, lstat) = false", m)
}
}
if !found {
t.Error("could not find", m)
}
}
if s == nil {
t.Error("ReadDir returned nil instead of empty slice")
}
}
func TestFileReaddirnames(t *testing.T) {
testReaddirnames(".", dot, t)
testReaddirnames(TempDir(), nil, t)
}
func TestFileReaddir(t *testing.T) {
testReaddir(".", dot, t)
testReaddir(TempDir(), nil, t)
}
func TestFileReadDir(t *testing.T) {
testReadDir(".", dot, t)
testReadDir(TempDir(), nil, t)
}
func TestReadDir(t *testing.T) {
dirname := "rumpelstilzchen"
_, err := ReadDir(dirname)
if err == nil {
t.Fatalf("ReadDir %s: error expected, none found", dirname)
}
dirname = "testdata"
list, err := ReadDir(dirname)
if err != nil {
t.Fatalf("ReadDir %s: %v", dirname, err)
}
foundFile := false
foundSubDir := false
for _, dir := range list {
switch {
case !dir.IsDir() && dir.Name() == "hello":
foundFile = true
case dir.IsDir() && dir.Name() == "issue37161":
foundSubDir = true
}
}
if !foundFile {
t.Fatalf("ReadDir %s: hello file not found", dirname)
}
if !foundSubDir {
t.Fatalf("ReadDir %s: testdata directory not found", dirname)
}
}
// TestReadNonDir just verifies that opening a non-directory returns an error.
func TestReadNonDir(t *testing.T) {
// Use filename of this source file; it is known to exist, and go tests run in source tree.
dirname := "dir_test.go"
_, err := ReadDir(dirname)
if err == nil {
t.Fatalf("ReadDir %s: error on non-dir expected, none found", dirname)
}
}