返回 DeepSeek-Reasonix
browser_config_test.go
根目录 / internal / config / browser_config_test.go
1 package config
2
3 import (
4 "reflect"
5 "strings"
6 "testing"
7
8 "github.com/BurntSushi/toml"
9 )
10
11 // A settings edit rewrites the whole file from the struct, so a section that
12 // does not render is a section the next edit deletes.
13 func TestBrowserConfigSurvivesRenderAndLoad(t *testing.T) {
14 c := Default()
15 c.Browser = BrowserConfig{
16 Enabled: true,
17 Endpoint: "http://127.0.0.1:9222",
18 AllowRemoteEndpoint: true,
19 ChromePath: "/opt/chrome/chrome",
20 ChromeArgs: []string{"--proxy-server=socks5://127.0.0.1:1080"},
21 UserDataDir: "/tmp/profile",
22 Headless: true,
23 }
24 rendered := RenderTOML(c)
25 if !strings.Contains(rendered, "[browser]") {
26 t.Fatalf("rendered config has no [browser] section:\n%s", rendered)
27 }
28 var decoded Config
29 if _, err := toml.Decode(rendered, &decoded); err != nil {
30 t.Fatalf("decode rendered config: %v", err)
31 }
32 if !reflect.DeepEqual(decoded.Browser, c.Browser) {
33 t.Fatalf("browser section round-trip:\n got %+v\nwant %+v", decoded.Browser, c.Browser)
34 }
35 }
36
37 func TestBrowserBackendIsOffByDefault(t *testing.T) {
38 if Default().Browser.Enabled {
39 t.Fatal("the browser backend is enabled by default")
40 }
41 // The full render documents the switch; a project delta carries only what
42 // the project actually changed.
43 if rendered := RenderTOML(Default()); !strings.Contains(rendered, "enabled = false # browser tools") {
44 t.Fatalf("the rendered config does not document [browser]:\n%s", rendered)
45 }
46 if delta := RenderTOMLProjectDelta(Default()); strings.Contains(delta, "[browser]") {
47 t.Fatalf("a default project delta rendered a [browser] section:\n%s", delta)
48 }
49 }
50
50 lines GO