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:
@@ -181,7 +181,7 @@ func renderHeader(m MetricsSnapshot, errMsg string, animFrame int, termWidth int
|
||||
if mole == "" {
|
||||
return lipgloss.JoinVertical(lipgloss.Left, headerLine, "", dangerStyle.Render("ERROR: "+errMsg)), ""
|
||||
}
|
||||
return lipgloss.JoinVertical(lipgloss.Left, headerLine, "", mole, dangerStyle.Render("ERROR: "+errMsg)), mole
|
||||
return lipgloss.JoinVertical(lipgloss.Left, headerLine, "", mole, dangerStyle.Render("ERROR: "+errMsg)), ""
|
||||
}
|
||||
if mole == "" {
|
||||
return headerLine, ""
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user