Files

74 lines
1.8 KiB
Go

// Copyright (c) 2026 Storm Dragon
// Authors: Storm Dragon, Angus Kola
// SPDX-License-Identifier: GPL-3.0-or-later
package config
import (
"path/filepath"
"testing"
)
func i3Flags(r ReadingSettings) []bool {
return []bool{r.I3Modes, r.I3Workspaces, r.I3WindowStates, r.I3Urgency, r.I3Marks, r.I3WorkspaceMoves}
}
func TestI3DefaultsPersistenceAndInheritance(t *testing.T) {
old, err := Load(filepath.Join("testdata", "settings-v2.toml"))
if err != nil {
t.Fatal(err)
}
for _, v := range i3Flags(old.Reading) {
if !v {
t.Fatal("existing configuration defaults i3 announcements off")
}
}
store, err := NewStore(filepath.Join(t.TempDir(), "settings.toml"))
if err != nil {
t.Fatal(err)
}
global := DefaultSettings()
if err = store.Save(global); err != nil {
t.Fatal(err)
}
app := global
app.Reading.I3Modes = false
app.Reading.I3Workspaces = false
app.Reading.I3WindowStates = false
app.Reading.I3Urgency = false
app.Reading.I3Marks = false
app.Reading.I3WorkspaceMoves = false
if err = store.SaveForApplication("Quiet App", app); err != nil {
t.Fatal(err)
}
loaded, found, err := store.LoadForApplication("Quiet App")
if err != nil || !found {
t.Fatalf("%t %v", found, err)
}
for _, v := range i3Flags(loaded.Reading) {
if v {
t.Fatal("override lost")
}
}
inherited, _, err := store.LoadForApplication("Other App")
if err != nil {
t.Fatal(err)
}
for _, v := range i3Flags(inherited.Reading) {
if !v {
t.Fatal("override leaked")
}
}
global.Reading = app.Reading
if err = store.Save(global); err != nil {
t.Fatal(err)
}
inherited, _, err = store.LoadForApplication("Other App")
if err != nil {
t.Fatal(err)
}
for _, v := range i3Flags(inherited.Reading) {
if v {
t.Fatal("global update not inherited")
}
}
}