A healthy host triggered ~20 PASS rows with details — too noisy for the common case. Default now prints only fail/warn rows plus a summary footer; an all-pass run collapses to a single line. Pass --verbose / -v for the full per-check output. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
88 lines
2.4 KiB
Go
88 lines
2.4 KiB
Go
package cli
|
|
|
|
import (
|
|
"bytes"
|
|
"strings"
|
|
"testing"
|
|
|
|
"banger/internal/system"
|
|
)
|
|
|
|
func TestPrintDoctorReport_BriefAllPass(t *testing.T) {
|
|
report := system.Report{}
|
|
report.AddPass("first", "detail one")
|
|
report.AddPass("second", "detail two")
|
|
report.AddPass("third")
|
|
|
|
var buf bytes.Buffer
|
|
if err := printDoctorReport(&buf, report, false); err != nil {
|
|
t.Fatalf("printDoctorReport: %v", err)
|
|
}
|
|
|
|
got := buf.String()
|
|
want := "all 3 checks passed\n"
|
|
if got != want {
|
|
t.Fatalf("brief all-pass output\n got: %q\nwant: %q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestPrintDoctorReport_BriefHidesPassDetails(t *testing.T) {
|
|
report := system.Report{}
|
|
report.AddPass("first", "detail one")
|
|
report.AddWarn("second", "warn detail")
|
|
report.AddPass("third", "detail three")
|
|
report.AddFail("fourth", "fail detail")
|
|
|
|
var buf bytes.Buffer
|
|
if err := printDoctorReport(&buf, report, false); err != nil {
|
|
t.Fatalf("printDoctorReport: %v", err)
|
|
}
|
|
|
|
got := buf.String()
|
|
if strings.Contains(got, "PASS") || strings.Contains(got, "first") || strings.Contains(got, "third") {
|
|
t.Fatalf("brief mode leaked PASS rows: %q", got)
|
|
}
|
|
for _, want := range []string{"WARN\tsecond", "warn detail", "FAIL\tfourth", "fail detail"} {
|
|
if !strings.Contains(got, want) {
|
|
t.Fatalf("missing %q in brief output: %q", want, got)
|
|
}
|
|
}
|
|
if !strings.Contains(got, "2 passed, 1 warning, 1 failure") {
|
|
t.Fatalf("missing summary footer in: %q", got)
|
|
}
|
|
}
|
|
|
|
func TestPrintDoctorReport_BriefSummaryPlurals(t *testing.T) {
|
|
report := system.Report{}
|
|
report.AddPass("a")
|
|
report.AddWarn("b")
|
|
report.AddWarn("c")
|
|
|
|
var buf bytes.Buffer
|
|
if err := printDoctorReport(&buf, report, false); err != nil {
|
|
t.Fatalf("printDoctorReport: %v", err)
|
|
}
|
|
if !strings.Contains(buf.String(), "1 passed, 2 warnings, 0 failures") {
|
|
t.Fatalf("plural counts wrong: %q", buf.String())
|
|
}
|
|
}
|
|
|
|
func TestPrintDoctorReport_VerboseShowsEverything(t *testing.T) {
|
|
report := system.Report{}
|
|
report.AddPass("first", "detail one")
|
|
report.AddWarn("second", "warn detail")
|
|
|
|
var buf bytes.Buffer
|
|
if err := printDoctorReport(&buf, report, true); err != nil {
|
|
t.Fatalf("printDoctorReport: %v", err)
|
|
}
|
|
got := buf.String()
|
|
for _, want := range []string{"PASS\tfirst", "detail one", "WARN\tsecond", "warn detail"} {
|
|
if !strings.Contains(got, want) {
|
|
t.Fatalf("verbose mode missing %q: %q", want, got)
|
|
}
|
|
}
|
|
if strings.Contains(got, "passed,") {
|
|
t.Fatalf("verbose mode should not print summary footer: %q", got)
|
|
}
|
|
}
|