Files
BlackBean/pigo/internal/pkgmgr/distribute_theme_test.go
2026-08-14 23:41:57 +08:00

57 lines
1.6 KiB
Go

package pkgmgr
import (
"os"
"path/filepath"
"testing"
)
// TestDistributeTheme verifies a theme package is stored under
// $PIGO_HOME/themes/<name>/ with its files intact.
func TestDistributeTheme(t *testing.T) {
home := t.TempDir()
t.Setenv("PIGO_HOME", home)
pkg := writePkg(t, `{"name":"pi-dark","version":"1.0.0","pi":{"type":"theme"}}`, map[string]string{
"theme.json": `{"bg":"#000"}`,
"assets/logo.txt": "logo",
})
files, err := DistributeTheme(pkg, "pi-dark")
if err != nil {
t.Fatalf("DistributeTheme: %v", err)
}
if _, err := os.Stat(filepath.Join(home, "themes", "pi-dark", "theme.json")); err != nil {
t.Errorf("theme.json not stored: %v", err)
}
if _, err := os.Stat(filepath.Join(home, "themes", "pi-dark", "assets", "logo.txt")); err != nil {
t.Errorf("theme asset not stored: %v", err)
}
if len(files) == 0 {
t.Error("created files empty")
}
}
// TestDistributeThemeReinstallReplaces verifies reinstall clears stale files.
func TestDistributeThemeReinstallReplaces(t *testing.T) {
home := t.TempDir()
t.Setenv("PIGO_HOME", home)
pkg1 := writePkg(t, `{"name":"pi-t","version":"1.0.0"}`, map[string]string{
"theme.json": `{}`,
"old.txt": "old",
})
if _, err := DistributeTheme(pkg1, "pi-t"); err != nil {
t.Fatalf("first install: %v", err)
}
pkg2 := writePkg(t, `{"name":"pi-t","version":"2.0.0"}`, map[string]string{
"theme.json": `{}`,
})
if _, err := DistributeTheme(pkg2, "pi-t"); err != nil {
t.Fatalf("reinstall: %v", err)
}
if _, err := os.Stat(filepath.Join(home, "themes", "pi-t", "old.txt")); !os.IsNotExist(err) {
t.Errorf("stale theme file survived reinstall: %v", err)
}
}