diff --git a/xtfs_test.go b/xtfs_test.go index 5db2b7e..c89f7dc 100644 --- a/xtfs_test.go +++ b/xtfs_test.go @@ -8,57 +8,66 @@ import ( "testing" ) -var ( - //go:embed _test/embed - embedded embed.FS - xtfs *XTFS -) +//go:embed _test/embed +var embedded embed.FS func TestMain(m *testing.M) { - var err error - xtfs, err = New("_test/disk", embedded, WithSub("_test/embed"), WithCaching(false)) - if err != nil { - panic(err) - } os.Exit(m.Run()) } -func TestEmbed(t *testing.T) { - fi, err := xtfs.Open("test1.txt") - if err != nil { - t.Log(err) - t.FailNow() +func TestXTFS(t *testing.T) { + tt := []struct { + Name string + File string + Expected string + }{ + { + Name: "Embed", + File: "test1.txt", + Expected: "test1", + }, + { + Name: "Disk", + File: "test2.txt", + Expected: "test3", + }, } - defer fi.Close() - test1, err := io.ReadAll(fi) + x, err := New("_test/disk", embedded, WithSub("_test/embed"), WithCaching(false)) if err != nil { t.Log(err) t.FailNow() } - if !strings.EqualFold(string(test1), "test1") { - t.Log("embed did not match") - t.FailNow() + for _, tc := range tt { + t.Run(tc.Name, func(t *testing.T) { + fi, err := x.Open(tc.File) + if err != nil { + t.Log(err) + t.FailNow() + } + defer fi.Close() + + contents, err := io.ReadAll(fi) + if err != nil { + t.Log(err) + t.FailNow() + } + + if !strings.EqualFold(string(contents), tc.Expected) { + t.Logf("xtfs did not match:\n\tgot: %s\n\texpected: %s\n", string(contents), tc.Expected) + t.FailNow() + } + }) } } -func TestDisk(t *testing.T) { - fi, err := xtfs.Open("test2.txt") - if err != nil { - t.Log(err) - t.FailNow() - } - defer fi.Close() +var emptyFS embed.FS - test2, err := io.ReadAll(fi) +func TestInvalid(t *testing.T) { + _, err := New("/var/lib/myapp/assets/custom", emptyFS) if err != nil { - t.Log(err) - t.FailNow() - } - - if !strings.EqualFold(string(test2), "test3") { - t.Log("embed did not match") + t.Log("invalid XTFS should not error explicitly") t.FailNow() } }