Files
wazero/internal/syscallfs/readfs_test.go
Crypt Keeper 83e4b66659 Consolidates internal code to syscallfs (#1003)
This consolidates internal code to syscallfs, which removes the fs.FS
specific path rules, except when adapting one to syscallfs. For example,
this allows the underlying filesystem to decide if relative paths are
supported or not, as well any EINVAL related concerns.

Signed-off-by: Adrian Cole <adrian@tetrate.io>
2023-01-04 13:53:53 +08:00

88 lines
1.8 KiB
Go

package syscallfs
import (
"io/fs"
"os"
pathutil "path"
"syscall"
"testing"
"github.com/tetratelabs/wazero/internal/testing/require"
)
func TestReadFS_MkDir(t *testing.T) {
dir := t.TempDir()
testFS := NewReadFS(dirFS(dir))
err := testFS.Mkdir("mkdir", fs.ModeDir)
require.Equal(t, syscall.ENOSYS, err)
}
func TestReadFS_Rename(t *testing.T) {
tmpDir := t.TempDir()
testFS := NewReadFS(dirFS(tmpDir))
file1 := "file1"
file1Path := pathutil.Join(tmpDir, file1)
file1Contents := []byte{1}
err := os.WriteFile(file1Path, file1Contents, 0o600)
require.NoError(t, err)
file2 := "file2"
file2Path := pathutil.Join(tmpDir, file2)
file2Contents := []byte{2}
err = os.WriteFile(file2Path, file2Contents, 0o600)
require.NoError(t, err)
err = testFS.Rename(file1, file2)
require.Equal(t, syscall.ENOSYS, err)
}
func TestReadFS_Rmdir(t *testing.T) {
dir := t.TempDir()
testFS := NewReadFS(dirFS(dir))
path := "rmdir"
realPath := pathutil.Join(dir, path)
require.NoError(t, os.Mkdir(realPath, 0o700))
err := testFS.Rmdir(path)
require.Equal(t, syscall.ENOSYS, err)
}
func TestReadFS_Unlink(t *testing.T) {
dir := t.TempDir()
testFS := NewReadFS(dirFS(dir))
path := "unlink"
realPath := pathutil.Join(dir, path)
require.NoError(t, os.WriteFile(realPath, []byte{}, 0o600))
err := testFS.Unlink(path)
require.Equal(t, syscall.ENOSYS, err)
}
func TestReadFS_Utimes(t *testing.T) {
dir := t.TempDir()
testFS := NewReadFS(dirFS(dir))
path := "utimes"
realPath := pathutil.Join(dir, path)
require.NoError(t, os.WriteFile(realPath, []byte{}, 0o600))
err := testFS.Utimes(path, 1, 1)
require.Equal(t, syscall.ENOSYS, err)
}
func TestReadFS_Open_Read(t *testing.T) {
tmpDir := t.TempDir()
testFS := NewReadFS(dirFS(tmpDir))
testFS_Open_Read(t, tmpDir, testFS)
}