summaryrefslogtreecommitdiff
path: root/internal/tui/flamegraph/model_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-09 08:05:26 +0200
committerPaul Buetow <paul@buetow.org>2026-03-09 08:05:26 +0200
commit9f35d16940f35591dd0b0c782d2ec8e57bba84b5 (patch)
tree031bd61cd47299ed66736012370541f4af760ceb /internal/tui/flamegraph/model_test.go
parent1277f03a01fafd5ce7931bf9d48dc92f089c6894 (diff)
tui: harden paused flame rendering
Diffstat (limited to 'internal/tui/flamegraph/model_test.go')
-rw-r--r--internal/tui/flamegraph/model_test.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/internal/tui/flamegraph/model_test.go b/internal/tui/flamegraph/model_test.go
index 2f98b73..f83ccff 100644
--- a/internal/tui/flamegraph/model_test.go
+++ b/internal/tui/flamegraph/model_test.go
@@ -1130,6 +1130,36 @@ func TestResizeRecalculatesLayoutAndCullsNarrowFrames(t *testing.T) {
}
}
+func TestSetViewportSameSizeKeepsPausedZoomLayoutStable(t *testing.T) {
+ m := newZoomModel()
+ m.selectedIdx = mustFrameIndex(t, m.frames, "root"+pathSeparator+"A")
+ m = pressFlameKey(t, m, tea.KeyPressMsg{Code: tea.KeyEnter})
+ m.paused = true
+
+ rootIdx := mustFrameIndex(t, m.frames, "root"+pathSeparator+"A")
+ if got, want := m.frames[rootIdx].Width, m.width; got != want {
+ t.Fatalf("expected zoom root to span full width before redundant viewport set, got %d want %d", got, want)
+ }
+
+ beforeFrames := append([]tuiFrame(nil), m.frames...)
+ beforeTargets := append([]tuiFrame(nil), m.targetFrames...)
+ m.SetViewport(m.width, m.height)
+
+ if m.animating {
+ t.Fatalf("expected redundant viewport set to avoid starting animation")
+ }
+ if !reflect.DeepEqual(m.frames, beforeFrames) {
+ t.Fatalf("expected redundant viewport set to preserve current frames")
+ }
+ if !reflect.DeepEqual(m.targetFrames, beforeTargets) {
+ t.Fatalf("expected redundant viewport set to preserve target frames")
+ }
+ rootIdx = mustFrameIndex(t, m.frames, "root"+pathSeparator+"A")
+ if got, want := m.frames[rootIdx].Width, m.width; got != want {
+ t.Fatalf("expected zoom root to remain full width after redundant viewport set, got %d want %d", got, want)
+ }
+}
+
func newZoomModel() Model {
m := NewModel(nil)
m.width = 120