diff --git a/tui/tui.go b/tui/tui.go index 562e11b..bcb955f 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -77,6 +77,9 @@ func Browse(ctx context.Context, opts BrowseOptions) error { opts.Stdout = os.Stdout } if opts.JSON { + if opts.Rows == nil { + opts.Rows = []Row{} + } enc := json.NewEncoder(opts.Stdout) enc.SetIndent("", " ") return enc.Encode(opts.Rows) diff --git a/tui/tui_test.go b/tui/tui_test.go index 49fbbed..ff01d41 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -35,6 +35,16 @@ func TestBrowseJSONUsesUniversalRows(t *testing.T) { } } +func TestBrowseJSONEncodesNilRowsAsEmptyArray(t *testing.T) { + var out bytes.Buffer + if err := Browse(context.Background(), BrowseOptions{AppName: "discrawl", JSON: true, Stdout: &out}); err != nil { + t.Fatalf("Browse json: %v", err) + } + if strings.TrimSpace(out.String()) != "[]" { + t.Fatalf("json = %q, want []", out.String()) + } +} + func TestRowItemUsesSharedArchiveShape(t *testing.T) { item := Row{ Source: "discord",