返回 DeepSeek-Reasonix
image_capability_snapshot_test.go
根目录 / internal / boot / image_capability_snapshot_test.go
1 package boot
2
3 import (
4 "context"
5 "reasonix/internal/event"
6 "testing"
7 )
8
9 func TestBuildImageCapabilityFrozenUntilRebuild(t *testing.T) {
10 isolateConfigHome(t)
11 dir := robustTempDir(t)
12 t.Chdir(dir)
13 base := `default_model = "relay/x"
14 [agent]
15 system_prompt = "stable prefix"
16 [[providers]]
17 name = "relay"
18 kind = "openai"
19 base_url = "http://localhost:1"
20 model = "x"
21 `
22 writeFile(t, dir, "reasonix.toml", base)
23 approveWorkspace(t, dir)
24 old, err := Build(context.Background(), Options{Sink: event.Discard})
25 if err != nil {
26 t.Fatal(err)
27 }
28 defer old.Close()
29 if old.ImageInputEnabled() || old.ImageCapabilityChanged() {
30 t.Fatal("fresh unknown snapshot should be disabled and current")
31 }
32 writeFile(t, dir, "reasonix.toml", base+"[providers.model_overrides.x]\nvision = true\n")
33 approveWorkspace(t, dir)
34 if old.ImageInputEnabled() || !old.ImageCapabilityChanged() {
35 t.Fatal("saved setting must invalidate, not mutate old runtime")
36 }
37 next, err := Build(context.Background(), Options{Sink: event.Discard})
38 if err != nil {
39 t.Fatal(err)
40 }
41 defer next.Close()
42 if !next.ImageInputEnabled() || next.ImageCapabilityChanged() {
43 t.Fatal("rebuilt snapshot should be enabled and current")
44 }
45 writeFile(t, dir, "reasonix.toml", base+"[providers.model_overrides.x]\nvision = false\n")
46 approveWorkspace(t, dir)
47 if !next.ImageInputEnabled() || !next.ImageCapabilityChanged() {
48 t.Fatal("running snapshot switched before rebuild")
49 }
50 }
51
51 lines GO