diff --git a/internal/miro/test.go b/internal/miro/test.go index 12d2988..6fd6d89 100644 --- a/internal/miro/test.go +++ b/internal/miro/test.go @@ -88,24 +88,30 @@ func runTests(path string, tio testIO) error { summary := testSummary{total: len(scenarios)} for _, scenario := range scenarios { - output.Fprintf(tio.out, "%s %s\n", output.LabelInfo("RUN"), scenario.relPath) + output.Fprintf(tio.out, "%s %s\n", output.Label("RUN", output.Info), scenario.relPath) if err := replayScenario(scenario, shellPath, tio, cfg.Sandbox); err != nil { summary.failed++ - output.Fprintf(tio.out, "FAIL %s: %v\n", scenario.relPath, err) + output.Fprintf(tio.out, "%s %s: %v\n", output.Label("FAIL", output.Fail), scenario.relPath, err) continue } summary.passed++ - output.Fprintf(tio.out, "PASS %s\n", scenario.relPath) + output.Fprintf(tio.out, "%s %s\n", output.Label("PASS", output.Pass), scenario.relPath) + } + + summaryColor := output.Pass + if summary.failed > 0 { + summaryColor = output.Fail } output.Fprintf( tio.out, - "Summary: total=%d passed=%d failed=%d\n", - summary.total, - summary.passed, - summary.failed, + "%s\n", + output.Label( + fmt.Sprintf("Summary: total=%d passed=%d failed=%d", summary.total, summary.passed, summary.failed), + summaryColor, + ), ) if summary.failed > 0 { diff --git a/internal/output/output.go b/internal/output/output.go index 03b05db..2cf742a 100644 --- a/internal/output/output.go +++ b/internal/output/output.go @@ -17,26 +17,39 @@ var ( }{ miroGreen: 0x70E000, chevronTeal: 0x1DD3B0, - info: 0xf5f2e1, - pass: 0x7bf1a8, - fail: 0xff8fa3, + info: 0xD7FFFF, + pass: 0x87D75F, + fail: 0xFF8787, } ) -func label(text string, color uint32) string { - return NewStyle().FG(color).Apply(text) +type Color int + +const ( + Info Color = iota + Pass + Fail +) + +func label(text string, color Color) string { + var fg uint32 + + switch color { + case Info: + fg = palette.info + case Pass: + fg = palette.pass + case Fail: + fg = palette.fail + default: + fg = palette.info + } + + return NewStyle().FG(fg).Apply(text) } -func LabelPass(text string) string { - return label(text, palette.pass) -} - -func LabelFail(text string) string { - return label(text, palette.fail) -} - -func LabelInfo(text string) string { - return label(text, palette.info) +func Label(text string, color Color) string { + return label(text, color) } func noColor() bool { diff --git a/internal/output/output_test.go b/internal/output/output_test.go index dec5f31..50473f7 100644 --- a/internal/output/output_test.go +++ b/internal/output/output_test.go @@ -29,14 +29,14 @@ func TestFormatPlainWhenNoColorSet(t *testing.T) { func TestLabelsPlainWhenNoColorSet(t *testing.T) { t.Setenv("NO_COLOR", "1") - if got := LabelInfo("RUN"); got != "RUN" { - t.Fatalf("LabelInfo() = %q, want %q", got, "RUN") + if got := Label("RUN", Info); got != "RUN" { + t.Fatalf("Label() = %q, want %q", got, "RUN") } - if got := LabelPass("PASS"); got != "PASS" { - t.Fatalf("LabelPass() = %q, want %q", got, "PASS") + if got := Label("PASS", Pass); got != "PASS" { + t.Fatalf("Label() = %q, want %q", got, "PASS") } - if got := LabelFail("FAIL"); got != "FAIL" { - t.Fatalf("LabelFail() = %q, want %q", got, "FAIL") + if got := Label("FAIL", Fail); got != "FAIL" { + t.Fatalf("Label() = %q, want %q", got, "FAIL") } }