Files
magpie/internal/edit/del_test.go
T
yetoneandClaude 0a234ce41d dial: one dial for every coding agent's model
Wails v3 tray panel and window, TUI and CLI. Switches model, effort and
provider for Claude Code, Codex, Gemini CLI, OpenCode, Pi, Goose, Cursor,
Copilot CLI and Crush with format-preserving config edits. Providers page
and registry, stored keys, live vendor model lists, profiles.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-22 21:47:29 +08:00

83 lines
2.4 KiB
Go

package edit
import "testing"
func TestDelJSONMiddleKeepsLayout(t *testing.T) {
in := "{\n \"env\": {\n \"A\": \"1\",\n \"B\": \"2\",\n \"C\": \"3\"\n },\n \"model\": \"m\"\n}\n"
p := tmpFile(t, "s.json", in)
if err := DelJSON(p, "env.B"); err != nil {
t.Fatal(err)
}
want := "{\n \"env\": {\n \"A\": \"1\",\n \"C\": \"3\"\n },\n \"model\": \"m\"\n}\n"
if got := read(t, p); got != want {
t.Fatalf("got\n%s\nwant\n%s", got, want)
}
// last member: preceding comma goes
if err := DelJSON(p, "env.C", "nope.x"); err != nil {
t.Fatal(err)
}
want = "{\n \"env\": {\n \"A\": \"1\"\n },\n \"model\": \"m\"\n}\n"
if got := read(t, p); got != want {
t.Fatalf("got\n%s\nwant\n%s", got, want)
}
// only member: parent collapses to {}
if err := DelJSON(p, "env.A"); err != nil {
t.Fatal(err)
}
want = "{\n \"env\": {},\n \"model\": \"m\"\n}\n"
if got := read(t, p); got != want {
t.Fatalf("got\n%s\nwant\n%s", got, want)
}
// top-level last member
if err := DelJSON(p, "model"); err != nil {
t.Fatal(err)
}
want = "{\n \"env\": {}\n}\n"
if got := read(t, p); got != want {
t.Fatalf("got\n%s\nwant\n%s", got, want)
}
}
func TestDelJSONCompactAndComments(t *testing.T) {
p := tmpFile(t, "c.jsonc", "{\"a\":1,\"b\":{\"x\":true},\"c\":3}")
if err := DelJSON(p, "a", "b.x"); err != nil {
t.Fatal(err)
}
if got := read(t, p); got != "{\"b\":{},\"c\":3}" {
t.Fatalf("got %q", got)
}
p = tmpFile(t, "d.jsonc", "{\n // keep me\n \"a\": 1, // trailing\n \"b\": 2\n}\n")
if err := DelJSON(p, "b"); err != nil {
t.Fatal(err)
}
if got := read(t, p); got != "{\n // keep me\n \"a\": 1 // trailing\n}\n" {
t.Fatalf("got %q", got)
}
}
func TestEnvFile(t *testing.T) {
p := tmpFile(t, ".env", "# comment\nFOO=bar\nexport BAZ=\"q x\"\n")
if v, ok := GetEnvFile(p, "BAZ"); !ok || v != "q x" {
t.Fatalf("got %q %v", v, ok)
}
if err := SetEnvFile(p, KV{"FOO", "new"}, KV{"KEY", "sk-1"}); err != nil {
t.Fatal(err)
}
if got := read(t, p); got != "# comment\nFOO=new\nexport BAZ=\"q x\"\nKEY=sk-1\n" {
t.Fatalf("got %q", got)
}
if err := DelEnvFile(p, "FOO", "KEY"); err != nil {
t.Fatal(err)
}
if got := read(t, p); got != "# comment\nexport BAZ=\"q x\"\n" {
t.Fatalf("got %q", got)
}
np := tmpFile(t, "new.env", "")
if err := SetEnvFile(np, KV{"A", "1"}); err != nil {
t.Fatal(err)
}
if got := read(t, np); got != "A=1\n" {
t.Fatalf("got %q", got)
}
}