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) } }