oprimized, working
This commit is contained in:
parent
2b39afca3b
commit
0350ecba9a
38 changed files with 1809 additions and 826 deletions
src/host/vfs
|
@ -1,13 +1,21 @@
|
|||
package vfs
|
||||
|
||||
import (
|
||||
"io/fs"
|
||||
"os"
|
||||
"path"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
type Dummy struct {
|
||||
name string
|
||||
}
|
||||
|
||||
// Stat implements File.
|
||||
func (d *Dummy) Stat() (fs.FileInfo, error) {
|
||||
return newFileInfo(d.name, 0), nil
|
||||
}
|
||||
|
||||
func (d *Dummy) Size() int64 {
|
||||
|
@ -35,15 +43,20 @@ var _ File = &Dummy{}
|
|||
type DummyFs struct {
|
||||
}
|
||||
|
||||
// Stat implements Filesystem.
|
||||
func (*DummyFs) Stat(filename string) (fs.FileInfo, error) {
|
||||
return newFileInfo(path.Base(filename), 0), nil // TODO
|
||||
}
|
||||
|
||||
func (d *DummyFs) Open(filename string) (File, error) {
|
||||
return &Dummy{}, nil
|
||||
}
|
||||
|
||||
func (d *DummyFs) ReadDir(path string) (map[string]File, error) {
|
||||
func (d *DummyFs) ReadDir(path string) ([]fs.DirEntry, error) {
|
||||
if path == "/dir/here" {
|
||||
return map[string]File{
|
||||
"file1.txt": &Dummy{},
|
||||
"file2.txt": &Dummy{},
|
||||
return []fs.DirEntry{
|
||||
newFileInfo("file1.txt", 0),
|
||||
newFileInfo("file2.txt", 0),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -63,7 +76,7 @@ func TestResolver(t *testing.T) {
|
|||
require.Equal("/f1.rar", path)
|
||||
return &Dummy{}, nil
|
||||
})
|
||||
require.Nil(err)
|
||||
require.NoError(err)
|
||||
require.Equal("/f1.rar", fsPath)
|
||||
require.Equal("/f2.rar", nestedFsPath)
|
||||
require.IsType(&archive{}, nestedFs)
|
||||
|
@ -76,7 +89,7 @@ func TestResolver(t *testing.T) {
|
|||
require.Equal("/", path)
|
||||
return &Dummy{}, nil
|
||||
})
|
||||
require.Nil(err)
|
||||
require.NoError(err)
|
||||
require.Nil(nestedFs)
|
||||
require.Equal("/", fsPath)
|
||||
require.Equal("", nestedFsPath)
|
||||
|
@ -90,7 +103,7 @@ func TestResolver(t *testing.T) {
|
|||
require.Equal("/", path)
|
||||
return &Dummy{}, nil
|
||||
})
|
||||
require.Nil(err)
|
||||
require.NoError(err)
|
||||
require.Nil(nestedFs)
|
||||
require.Equal("/", fsPath)
|
||||
require.Equal("", nestedFsPath)
|
||||
|
@ -103,7 +116,7 @@ func TestResolver(t *testing.T) {
|
|||
require.Equal("/f1.rar", path)
|
||||
return &Dummy{}, nil
|
||||
})
|
||||
require.Nil(err)
|
||||
require.NoError(err)
|
||||
require.Equal("/f1.rar", fsPath)
|
||||
require.Equal("/", nestedFsPath)
|
||||
require.IsType(&archive{}, nestedFs)
|
||||
|
@ -116,7 +129,7 @@ func TestResolver(t *testing.T) {
|
|||
require.Equal("/test1/f1.rar", path)
|
||||
return &Dummy{}, nil
|
||||
})
|
||||
require.Nil(err)
|
||||
require.NoError(err)
|
||||
require.IsType(&archive{}, nestedFs)
|
||||
require.Equal("/test1/f1.rar", fsPath)
|
||||
require.Equal("/", nestedFsPath)
|
||||
|
@ -150,23 +163,43 @@ func TestFiles(t *testing.T) {
|
|||
require := require.New(t)
|
||||
|
||||
files := map[string]*Dummy{
|
||||
"/test/file.txt": &Dummy{},
|
||||
"/test/file.txt": &Dummy{},
|
||||
"/test/file2.txt": &Dummy{},
|
||||
"/test1/file.txt": &Dummy{},
|
||||
}
|
||||
{
|
||||
file, err := getFile(files, "/test")
|
||||
require.Nil(err)
|
||||
require.Equal(&Dir{}, file)
|
||||
require.NoError(err)
|
||||
require.Equal(&dir{}, file)
|
||||
}
|
||||
{
|
||||
file, err := getFile(files, "/test/file.txt")
|
||||
require.Nil(err)
|
||||
require.NoError(err)
|
||||
require.Equal(&Dummy{}, file)
|
||||
}
|
||||
|
||||
{
|
||||
out, err := listFilesInDir(files, "/test")
|
||||
require.Nil(err)
|
||||
require.Contains(out, "file.txt")
|
||||
require.Equal(&Dummy{}, out["file.txt"])
|
||||
out, err := listDirFromFiles(files, "/test")
|
||||
require.NoError(err)
|
||||
require.Len(out, 2)
|
||||
require.Equal("file.txt", out[0].Name())
|
||||
require.Equal("file2.txt", out[1].Name())
|
||||
require.False(out[0].IsDir())
|
||||
require.False(out[1].IsDir())
|
||||
}
|
||||
{
|
||||
out, err := listDirFromFiles(files, "/test1")
|
||||
require.NoError(err)
|
||||
require.Len(out, 1)
|
||||
require.Equal("file.txt", out[0].Name())
|
||||
require.False(out[0].IsDir())
|
||||
}
|
||||
{
|
||||
out, err := listDirFromFiles(files, "/")
|
||||
require.NoError(err)
|
||||
require.Len(out, 2)
|
||||
require.Equal("test", out[0].Name())
|
||||
require.Equal("test1", out[1].Name())
|
||||
require.True(out[0].IsDir())
|
||||
require.True(out[1].IsDir())
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue