返回 DeepSeek-Reasonix
status_bar_upgrade_test.go
根目录 / internal / config / status_bar_upgrade_test.go
1 package config
2
3 import (
4 "os"
5 "path/filepath"
6 "strings"
7 "testing"
8 )
9
10 func TestStatusBarIconDefaultUpgradePreservesLaterChoice(t *testing.T) {
11 home := isolateUserConfigHome(t)
12 t.Setenv("XDG_CONFIG_HOME", filepath.Join(home, "xdg"))
13 path := UserConfigPath()
14 if err := os.MkdirAll(filepath.Dir(path), 0700); err != nil {
15 t.Fatal(err)
16 }
17 if err := os.WriteFile(path, []byte("[desktop]\nstatus_bar_style = \"text\"\ntheme = \"dark\"\n"), 0600); err != nil {
18 t.Fatal(err)
19 }
20 cfg := LoadForEdit(path)
21 if cfg.DesktopStatusBarStyle() != "icon" {
22 t.Fatal("legacy text setting must adopt the new icon default")
23 }
24 if err := cfg.SaveTo(path); err != nil {
25 t.Fatal(err)
26 }
27 cfg = LoadForEdit(path)
28 if !cfg.Desktop.StatusBarStyleInitialized || cfg.DesktopStatusBarStyle() != "icon" || cfg.DesktopTheme() != "dark" {
29 t.Fatal("save must persist the migration and preserve unrelated preferences")
30 }
31 if err := cfg.SetDesktopStatusBarStyle("text"); err != nil {
32 t.Fatal(err)
33 }
34 for range 2 {
35 if err := cfg.SaveTo(path); err != nil {
36 t.Fatal(err)
37 }
38 cfg = LoadForEdit(path)
39 if cfg.DesktopStatusBarStyle() != "text" {
40 t.Fatal("later manual text choice must survive repeated reloads")
41 }
42 }
43 if strings.Contains(RenderTOMLForScope(cfg, RenderScopeProject), "status_bar_style_initialized") {
44 t.Fatal("desktop migration marker must not enter project configuration")
45 }
46 }
47
47 lines GO