package main import ( "bytes" "path/filepath" "strings" "testing" ) func TestLocalNotesCLI(t *testing.T) { t.Setenv("XDG_CONFIG_HOME", t.TempDir()) t.Setenv("NETSSH_CACHE_PATH", filepath.Join(t.TempDir(), "hosts.json")) run := func(args []string, input string) (string, error) { root := rootCmd() var out bytes.Buffer root.SetOut(&out) root.SetErr(&out) root.SetIn(strings.NewReader(input)) root.SetArgs(args) err := root.Execute() return out.String(), err } if _, err := run([]string{"notes", "set", "web01", "--kind", "vm"}, "First\nSecond"); err != nil { t.Fatal(err) } if _, err := run([]string{"notes", "append", "web01", "Third", "--kind", "vm"}, ""); err != nil { t.Fatal(err) } out, err := run([]string{"notes", "show", "web01", "--kind", "vm"}, "") if err != nil || out != "First\nSecond\nThird" { t.Fatalf("show: %q, %v", out, err) } if _, err := run([]string{"notes", "set", "web01", "", "--kind", "vm"}, ""); err != nil { t.Fatal(err) } out, err = run([]string{"notes", "show", "web01", "--kind", "vm"}, "") if err != nil || out != "" { t.Fatalf("clear: %q, %v", out, err) } }