1
0
mirror of https://github.com/tw93/Mole.git synced 2026-03-22 18:30:08 +00:00

fix(status): prevent duplicate mole rendering in error state

- renderHeader now returns empty string as second return value when
  error message is present, avoiding duplicate mole in main.go View
- Add unit tests to prevent regression

Fixes P2 issue: view.go (line 184) + main.go (line 160)
This commit is contained in:
tw93
2026-02-21 20:21:45 +08:00
parent 68b0b601a4
commit 7648bd9d12
2 changed files with 32 additions and 1 deletions

View File

@@ -920,6 +920,37 @@ func TestSparkline(t *testing.T) {
}
}
func TestRenderHeaderErrorReturnsMoleOnce(t *testing.T) {
header, mole := renderHeader(MetricsSnapshot{}, "boom", 0, 120, false)
if mole != "" {
t.Fatalf("renderHeader() mole return should be empty on error to avoid duplicate render, got %q", mole)
}
if !strings.Contains(header, "ERROR: boom") {
t.Fatalf("renderHeader() missing error text, got %q", header)
}
if strings.Count(header, "/\\_/\\") != 1 {
t.Fatalf("renderHeader() should contain one mole frame in error state, got %d", strings.Count(header, "/\\_/\\"))
}
}
func TestModelViewErrorRendersSingleMole(t *testing.T) {
m := model{
width: 120,
height: 40,
ready: true,
metrics: MetricsSnapshot{},
errMessage: "boom",
animFrame: 0,
catHidden: false,
}
view := m.View()
if strings.Count(view, "/\\_/\\") != 1 {
t.Fatalf("model.View() should render one mole frame in error state, got %d", strings.Count(view, "/\\_/\\"))
}
}
func stripANSI(s string) string {
var result strings.Builder
i := 0