Fix asset provisioning to strip embedded share/radiantwave root

This commit is contained in:
NeilClack
2026-08-03 02:40:51 -05:00
parent 11b25227d7
commit b54dbca2d5
3 changed files with 55 additions and 1 deletions
+35
View File
@@ -5,6 +5,7 @@ import (
"os"
"path/filepath"
"testing"
"testing/fstest"
)
//go:embed testdata
@@ -38,6 +39,40 @@ func TestProvisionCopiesBundledFiles(t *testing.T) {
}
}
// TestProvisionAssetsStripsEmbeddedRoot is a regression test: provisioning
// used to preserve the embedded share/radiantwave root, so assets landed in
// <dataDir>/share/radiantwave/fonts instead of <dataDir>/fonts. ProvisionAssets
// strips that root so consumers find the assets directly under the assets dir.
func TestProvisionAssetsStripsEmbeddedRoot(t *testing.T) {
fsys := fstest.MapFS{
"share/radiantwave/fonts/TestFont.ttf": &fstest.MapFile{Data: []byte("font")},
"share/radiantwave/shaders/text.frag": &fstest.MapFile{Data: []byte("frag")},
"share/radiantwave/shaders/text.vert": &fstest.MapFile{Data: []byte("vert")},
"share/radiantwave/tos/01 - WELCOME.html": &fstest.MapFile{Data: []byte("welcome")},
}
dest := t.TempDir()
if err := ProvisionAssets(fsys, dest); err != nil {
t.Fatalf("ProvisionAssets returned error: %v", err)
}
// Assets must land directly under dest, not under dest/share/radiantwave.
for _, rel := range []string{
"fonts/TestFont.ttf",
"shaders/text.frag",
"shaders/text.vert",
"tos/01 - WELCOME.html",
} {
if _, err := os.Stat(filepath.Join(dest, filepath.FromSlash(rel))); err != nil {
t.Errorf("expected %s to be provisioned directly under dest: %v", rel, err)
}
}
if _, err := os.Stat(filepath.Join(dest, "share")); !os.IsNotExist(err) {
t.Errorf("unexpected share/ directory created under dest: %v", err)
}
}
func TestProvisionOverwritesStaleFiles(t *testing.T) {
dest := t.TempDir()