Files
cthulhu/internal/config/patch_contract_test.go

70 lines
1.9 KiB
Go

// Copyright (c) 2026 Storm Dragon
// Authors: Storm Dragon, Angus Kola
// SPDX-License-Identifier: GPL-3.0-or-later
package config
import "testing"
func TestLoadExplicitZeroAndEmptyOverridesAcrossSchemas(t *testing.T) {
for name, contents := range map[string]string{
"legacy profile overrides general": `
[general]
enableSpeech = true
enableBraille = true
soundVolume = 0.8
cthulhuModifierKeys = ["Insert"]
echoSpeechServerInfo = ["server", "test-module"]
[general.voices.default]
rate = 75
[profiles.default]
enableSpeech = false
enableBraille = false
soundVolume = 0.0
playSoundForRole = false
cthulhuModifierKeys = []
echoSpeechServerInfo = ["server", ""]
[profiles.default.reading]
speakBlankLines = false
[profiles.default.voices.default]
rate = 0
`,
"versioned patch overrides defaults": `
schema-version = 2
active-profile = "default"
[profiles.default.speech]
enabled = false
[profiles.default.speech.default-voice]
rate = 0
[profiles.default.braille]
enabled = false
[profiles.default.sound]
volume = 0.0
play-for-role = false
[profiles.default.keyboard]
screen-reader-keys = []
[profiles.default.key-echo]
speech-server = ""
[profiles.default.presentation.reading]
speak-blank-lines = false
`,
} {
t.Run(name, func(t *testing.T) {
settings, err := Load(writeConfig(t, contents))
if err != nil {
t.Fatal(err)
}
if settings.EnableSpeech || settings.EnableBraille || settings.SoundVolume != 0 ||
settings.PlaySoundForRole || settings.Reading.SpeakBlankLines ||
len(settings.CthulhuModifierKeys) != 0 || settings.EchoSpeechServer != "" ||
settings.DefaultVoice.Rate == nil || *settings.DefaultVoice.Rate != 0 {
t.Fatalf("explicit false/zero/empty values were lost: %+v", settings)
}
if !settings.EnableSound || !settings.PlaySoundForState || !settings.EnableKeyEcho ||
!settings.Reading.ReadFullRowInGUITable || settings.DefaultVoice.Gain != nil {
t.Fatalf("omitted fields changed their defaults: %+v", settings)
}
})
}
}