63 lines
1.3 KiB
Go
63 lines
1.3 KiB
Go
package vfs
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
"io"
|
|
"os"
|
|
"path"
|
|
"testing"
|
|
)
|
|
|
|
func TestVFS_Basic(t *testing.T) {
|
|
testcases := []struct {
|
|
name string
|
|
dirPath string
|
|
fileName string
|
|
content []byte
|
|
mode os.FileMode
|
|
}{
|
|
{"Simple Root", ".", "test.txt", []byte("some content"), 0666},
|
|
{"One Layer Path", "folder", "test.txt", []byte("some content"), 0666},
|
|
{"Multi-Layer Path", "folder/folder2/dang", "test.txt", []byte("some content"), 0666},
|
|
}
|
|
for _, testcase := range testcases {
|
|
vfs := NewVFS()
|
|
fullPath := path.Join(testcase.dirPath, testcase.fileName)
|
|
|
|
err := vfs.MkdirAll(testcase.dirPath, 0777)
|
|
assert.NoError(t, err)
|
|
|
|
err = vfs.WriteFile(fullPath, testcase.content, testcase.mode)
|
|
assert.NoError(t, err)
|
|
|
|
fp, err := vfs.Open(fullPath)
|
|
assert.NoError(t, err)
|
|
|
|
content, err := io.ReadAll(fp)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, content, testcase.content)
|
|
|
|
err = fp.Close()
|
|
assert.NoError(t, err)
|
|
}
|
|
}
|
|
|
|
func TestVFS_MockFile(t *testing.T) {
|
|
vfs := NewVFS()
|
|
path := "test.txt"
|
|
sz := int64(8096)
|
|
|
|
err := vfs.CreateMockFile(path, sz, 0666)
|
|
assert.NoError(t, err)
|
|
|
|
fp, err := vfs.Open(path)
|
|
assert.NoError(t, err)
|
|
|
|
stat, err := fp.Stat()
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, stat.Size(), sz)
|
|
|
|
err = fp.Close()
|
|
assert.NoError(t, err)
|
|
}
|