109 lines
2.1 KiB
Go
109 lines
2.1 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()
|
|
p := "test.txt"
|
|
sz := int64(8096)
|
|
|
|
err := vfs.CreateMockFile(p, sz, 0666)
|
|
assert.NoError(t, err)
|
|
|
|
fp, err := vfs.Open(p)
|
|
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)
|
|
}
|
|
|
|
func TestVFS_DirSize(t *testing.T) {
|
|
vfs := NewVFS()
|
|
|
|
err := vfs.MkdirAll("root/one", 0777)
|
|
assert.NoError(t, err)
|
|
|
|
err = vfs.MkdirAll("root/two", 0777)
|
|
assert.NoError(t, err)
|
|
|
|
files := []string{
|
|
"root/one/f1",
|
|
"root/one/f2",
|
|
"root/two/f1",
|
|
"root/two/f2",
|
|
"root/two/f3",
|
|
"root/two/f4",
|
|
}
|
|
|
|
sz := int64(1)
|
|
for _, file := range files {
|
|
err = vfs.CreateMockFile(file, sz, 0666)
|
|
assert.NoError(t, err)
|
|
|
|
}
|
|
|
|
fp, err := vfs.Open("root/one")
|
|
assert.NoError(t, err)
|
|
|
|
stat, err := fp.Stat()
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, stat.Size(), int64(2))
|
|
|
|
err = fp.Close()
|
|
assert.NoError(t, err)
|
|
|
|
fp, err = vfs.Open("root/two")
|
|
assert.NoError(t, err)
|
|
|
|
stat, err = fp.Stat()
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, stat.Size(), int64(4))
|
|
|
|
err = fp.Close()
|
|
assert.NoError(t, err)
|
|
}
|