74 lines
1.8 KiB
Go
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")
|
|
}
|
|
}
|
|
}
|