Implement ReadDir
Signed-off-by: jolheiser <john.olheiser@gmail.com>pull/3/head v0.0.2
parent
5f001da59e
commit
ea7687d011
|
@ -39,6 +39,12 @@ func (f *FS) Open(name string) (fs.File, error) {
|
||||||
return f.fs.Open(name)
|
return f.fs.Open(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReadDir reads []fs.DirEntry
|
||||||
|
// This method will prefer EMBEDDED, because that is the "real" FS for overlay
|
||||||
|
func (f *FS) ReadDir(name string) ([]fs.DirEntry, error) {
|
||||||
|
return fs.ReadDir(f.fs, name)
|
||||||
|
}
|
||||||
|
|
||||||
// Option is a functional option for an FS
|
// Option is a functional option for an FS
|
||||||
type Option func(*FS) error
|
type Option func(*FS) error
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ package overlay
|
||||||
import (
|
import (
|
||||||
"embed"
|
"embed"
|
||||||
"io"
|
"io"
|
||||||
|
"io/fs"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -62,6 +63,48 @@ func TestOverlay(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestWalk(t *testing.T) {
|
||||||
|
expected := []string{"test1.txt", "test2.txt"}
|
||||||
|
|
||||||
|
x, err := New("_test/disk", embedded, WithSub("_test/embed"), WithCaching(false))
|
||||||
|
if err != nil {
|
||||||
|
t.Log(err)
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
found := make([]string, 0)
|
||||||
|
if err := fs.WalkDir(x, ".", func(walkPath string, walkEntry fs.DirEntry, walkErr error) error {
|
||||||
|
if walkErr != nil {
|
||||||
|
return walkErr
|
||||||
|
}
|
||||||
|
|
||||||
|
if walkEntry.IsDir() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
found = append(found, walkEntry.Name())
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}); err != nil {
|
||||||
|
t.Log(err)
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, e := range expected {
|
||||||
|
exists := false
|
||||||
|
for _, f := range found {
|
||||||
|
if e == f {
|
||||||
|
exists = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
t.Logf("could not find %s in %s\n", e, found)
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var emptyFS embed.FS
|
var emptyFS embed.FS
|
||||||
|
|
||||||
func TestInvalid(t *testing.T) {
|
func TestInvalid(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue