66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
package assets
|
|
|
|
import (
|
|
"embed"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
//go:embed testdata
|
|
var testFS embed.FS
|
|
|
|
func TestProvisionCopiesBundledFiles(t *testing.T) {
|
|
dest := t.TempDir()
|
|
|
|
if err := Provision(testFS, dest); err != nil {
|
|
t.Fatalf("Provision returned error: %v", err)
|
|
}
|
|
|
|
for _, rel := range []string{
|
|
"testdata/fonts/TestFont.ttf",
|
|
"testdata/shaders/solid_color.frag",
|
|
"testdata/shaders/solid_color.vert",
|
|
"testdata/tos/01 - WELCOME.html",
|
|
} {
|
|
got, err := os.ReadFile(filepath.Join(dest, filepath.FromSlash(rel)))
|
|
if err != nil {
|
|
t.Errorf("expected %s to be provisioned: %v", rel, err)
|
|
continue
|
|
}
|
|
want, err := testFS.ReadFile(rel)
|
|
if err != nil {
|
|
t.Fatalf("reading fixture %s: %v", rel, err)
|
|
}
|
|
if string(got) != string(want) {
|
|
t.Errorf("provisioned %s content mismatch", rel)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestProvisionOverwritesStaleFiles(t *testing.T) {
|
|
dest := t.TempDir()
|
|
|
|
// Plant a stale shader that differs from the bundled one.
|
|
stalePath := filepath.Join(dest, "testdata", "shaders", "solid_color.vert")
|
|
if err := os.MkdirAll(filepath.Dir(stalePath), 0755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.WriteFile(stalePath, []byte("stale content"), 0644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if err := Provision(testFS, dest); err != nil {
|
|
t.Fatalf("Provision returned error: %v", err)
|
|
}
|
|
|
|
got, err := os.ReadFile(stalePath)
|
|
if err != nil {
|
|
t.Fatalf("reading provisioned file: %v", err)
|
|
}
|
|
want, _ := testFS.ReadFile("testdata/shaders/solid_color.vert")
|
|
if string(got) != string(want) {
|
|
t.Errorf("stale file was not overwritten: got %q want %q", got, want)
|
|
}
|
|
}
|