Skip to content

Commit 6df0024

Browse files
fix: handle empty data set using --format explore
1 parent 3a7b085 commit 6df0024

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

internal/jsonview/explorer.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,10 @@ func (v *JSONViewer) navigateForward() (tea.Model, tea.Cmd) {
406406
return v, nil
407407
}
408408

409+
if len(tableView.rowData) < 1 {
410+
return v, nil
411+
}
412+
409413
cursor := tableView.table.Cursor()
410414
selected := tableView.rowData[cursor]
411415
if !v.canNavigateInto(selected) {

internal/jsonview/explorer_test.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package jsonview
2+
3+
import (
4+
"testing"
5+
6+
"github.com/charmbracelet/bubbles/help"
7+
"github.com/tidwall/gjson"
8+
)
9+
10+
func TestNavigateForward_EmptyRowData(t *testing.T) {
11+
// An empty JSON array produces a TableView with no rows.
12+
emptyArray := gjson.Parse("[]")
13+
view, err := newTableView("", emptyArray, false)
14+
if err != nil {
15+
t.Fatalf("newTableView: %v", err)
16+
}
17+
18+
viewer := &JSONViewer{
19+
stack: []JSONView{view},
20+
root: "test",
21+
help: help.New(),
22+
}
23+
24+
// Should return without panicking despite the empty data set.
25+
model, cmd := viewer.navigateForward()
26+
if model != viewer {
27+
t.Error("expected same viewer model returned")
28+
}
29+
if cmd != nil {
30+
t.Error("expected nil cmd")
31+
}
32+
33+
// Stack should remain unchanged (no new view pushed).
34+
if len(viewer.stack) != 1 {
35+
t.Errorf("expected stack length 1, got %d", len(viewer.stack))
36+
}
37+
}

0 commit comments

Comments
 (0)