Initial Go project built with Bubble Tea and Lip Gloss: - Live preview and management of /etc/update-motd.d scripts - Embedded presets (ubuntu-default, minimal, server-dashboard) - Bundled POSIX sh style scripts (brand header, sysinfo panel, footer) - Snapshot/restore safety around applying changes - CLI subcommands preview, apply, restore, list-presets - Unit tests for detect, sanitize, and apply logic
59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package preset
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestBuiltinPresetsLoad(t *testing.T) {
|
|
t.Setenv("XDG_CONFIG_HOME", t.TempDir())
|
|
|
|
presets, err := LoadAll()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(presets) < 3 {
|
|
t.Errorf("Built-in-Presets fehlen: %d geladen", len(presets))
|
|
}
|
|
for _, p := range presets {
|
|
if p.Source != "builtin" {
|
|
t.Errorf("Preset %s: Source = %s", p.Name, p.Source)
|
|
}
|
|
if len(p.Scripts) == 0 {
|
|
t.Errorf("Preset %s hat keine Scripte", p.Name)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSaveAndUserOverride(t *testing.T) {
|
|
t.Setenv("XDG_CONFIG_HOME", t.TempDir())
|
|
|
|
p := Preset{
|
|
Name: "minimal",
|
|
Description: "eigene Variante",
|
|
Scripts: []Entry{{Name: "00-header", Enabled: true}},
|
|
}
|
|
if _, err := SaveUser(p); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
presets, err := LoadAll()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, got := range presets {
|
|
if got.Name == "minimal" {
|
|
if got.Source != "user" || got.Description != "eigene Variante" {
|
|
t.Errorf("User-Override greift nicht: %+v", got)
|
|
}
|
|
return
|
|
}
|
|
}
|
|
t.Fatal("minimal nicht gefunden")
|
|
}
|
|
|
|
func TestDeleteUserRejectsUnknown(t *testing.T) {
|
|
t.Setenv("XDG_CONFIG_HOME", t.TempDir())
|
|
if err := DeleteUser("gibt-es-nicht"); err == nil {
|
|
t.Error("Löschen eines fehlenden Presets sollte fehlschlagen")
|
|
}
|
|
}
|