mirror of
https://github.com/tw93/Mole.git
synced 2026-03-22 20:15:07 +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 == "" {
|
if mole == "" {
|
||||||
return lipgloss.JoinVertical(lipgloss.Left, headerLine, "", dangerStyle.Render("ERROR: "+errMsg)), ""
|
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 == "" {
|
if mole == "" {
|
||||||
return headerLine, ""
|
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 {
|
func stripANSI(s string) string {
|
||||||
var result strings.Builder
|
var result strings.Builder
|
||||||
i := 0
|
i := 0
|
||||||
|
|||||||
Reference in New Issue
Block a user