Files

42 lines
1.1 KiB
Go

// Copyright (c) 2026 Storm Dragon
// SPDX-License-Identifier: GPL-3.0-or-later
package config
import (
"path/filepath"
"reflect"
"testing"
)
func TestWineSettingsRoundTripAndValidation(t *testing.T) {
settings := DefaultSettings()
settings.Wine = WineSettings{ControllerOnly: true, ExcludedPrograms: []string{"Game.exe", "Another Game.exe"}}
path := filepath.Join(t.TempDir(), "settings.toml")
store, err := NewStore(path)
if err != nil {
t.Fatal(err)
}
if err := store.Save(settings); err != nil {
t.Fatal(err)
}
loaded, err := Load(path)
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(loaded.Wine, settings.Wine) {
t.Fatalf("Wine settings = %+v", loaded.Wine)
}
cloned := cloneSettings(settings)
cloned.Wine.ExcludedPrograms[0] = "Changed.exe"
if settings.Wine.ExcludedPrograms[0] != "Game.exe" {
t.Fatal("clone aliases exclusions")
}
for _, name := range []string{"", "../game.exe", `C:\game.exe`, "Game.exe\rOther.exe", "game.exe\n"} {
settings.Wine.ExcludedPrograms = []string{name}
if err := Validate(settings); err == nil {
t.Fatalf("accepted exclusion %q", name)
}
}
}