MCPcopy
hub / github.com/SurgeDM/Surge / TestDynamicKeyMapReloading

Function TestDynamicKeyMapReloading

internal/tui/keys_test.go:123–190  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

121}
122
123func TestDynamicKeyMapReloading(t *testing.T) {
124 if runtime.GOOS == "windows" {
125 t.Skip("Skipping on Windows: GetSurgeDir uses %APPDATA% and does not honor XDG_CONFIG_HOME")
126 }
127
128 tmpDir, err := os.MkdirTemp("", "surge-tui-keymap-test")
129 if err != nil {
130 t.Fatalf("Failed to create temp dir: %v", err)
131 }
132 defer func() {
133 _ = os.RemoveAll(tmpDir)
134 }()
135
136 // Override configuration directory
137 t.Setenv("XDG_CONFIG_HOME", tmpDir)
138
139 err = config.EnsureDirs()
140 if err != nil {
141 t.Fatalf("Failed to ensure directories: %v", err)
142 }
143
144 // 1. Initialize keymap and verify default state
145 km, err := config.LoadKeyMap()
146 if err != nil {
147 t.Fatalf("Failed to load keymap: %v", err)
148 }
149
150 m := RootModel{
151 keys: km,
152 lastKeyMapModTime: time.Now().Add(-10 * time.Second), // Ensure modTime is older
153 lastConfigCheckTime: time.Now().Add(-2 * time.Second), // Ensure check triggers
154 }
155
156 if len(m.keys.Dashboard.ToggleHelp.Keys()) != 1 || m.keys.Dashboard.ToggleHelp.Keys()[0] != "h" {
157 t.Errorf("Expected default ToggleHelp key 'h', got %v", m.keys.Dashboard.ToggleHelp.Keys())
158 }
159
160 // 2. Simulate user editing keymap.json on disk
161 customKeyMap := config.DefaultKeyMap()
162 customKeyMap.Dashboard.ToggleHelp = key.NewBinding(
163 key.WithKeys("ctrl+x"),
164 key.WithHelp("ctrl+x", "keybindings"),
165 )
166
167 // Save custom keymap to temp directory
168 err = config.SaveKeyMap(customKeyMap)
169 if err != nil {
170 t.Fatalf("Failed to save custom keymap: %v", err)
171 }
172
173 // Update modTime on disk to simulate fresh write in the past
174 keymapPath := config.GetKeyMapConfigPath()
175 now := time.Now()
176 err = os.Chtimes(keymapPath, now, now)
177 if err != nil {
178 t.Fatalf("Failed to set file times: %v", err)
179 }
180

Callers

nothing calls this directly

Calls 7

UpdateMethod · 0.95
EnsureDirsFunction · 0.92
LoadKeyMapFunction · 0.92
DefaultKeyMapFunction · 0.92
SaveKeyMapFunction · 0.92
GetKeyMapConfigPathFunction · 0.92
AddMethod · 0.65

Tested by

no test coverage detected