From 8cd6fdac81cf0923c6f011f75d3af6ddb711b139 Mon Sep 17 00:00:00 2001 From: Mark Wolfe Date: Fri, 16 Aug 2024 08:20:01 +1000 Subject: [PATCH] fix for layout issues with log messages --- internal/job/shell/logger.go | 4 ++-- internal/job/shell/logger_test.go | 32 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/internal/job/shell/logger.go b/internal/job/shell/logger.go index 1990e33a93..adcd40fd78 100644 --- a/internal/job/shell/logger.go +++ b/internal/job/shell/logger.go @@ -86,7 +86,7 @@ func (wl *WriterLogger) Commentf(format string, v ...any) { func (wl *WriterLogger) Errorf(format string, v ...any) { if wl.Ansi { - wl.Printf(ansiColor("🚨 Error: "+format+"\n^^^ +++", "31"), v...) + wl.Printf(ansiColor("🚨 Error: "+format, "31")+"\n^^^ +++", v...) } else { wl.Printf("🚨 Error: "+format+"\n^^^ +++", v...) } @@ -94,7 +94,7 @@ func (wl *WriterLogger) Errorf(format string, v ...any) { func (wl *WriterLogger) Warningf(format string, v ...any) { if wl.Ansi { - wl.Printf(ansiColor("⚠️ Warning: "+format+"\n^^^ +++", "33"), v...) + wl.Printf(ansiColor("⚠️ Warning: "+format, "33")+"\n^^^ +++", v...) } else { wl.Printf("⚠️ Warning: "+format+"\n^^^ +++", v...) } diff --git a/internal/job/shell/logger_test.go b/internal/job/shell/logger_test.go index b591d90ac4..d1608d2f03 100644 --- a/internal/job/shell/logger_test.go +++ b/internal/job/shell/logger_test.go @@ -43,6 +43,38 @@ func TestAnsiLogger(t *testing.T) { } } +func TestAnsiWithColorsLogger(t *testing.T) { + got := &bytes.Buffer{} + l := shell.NewWriterLogger(got, true, nil) + + l.Headerf("Testing header: %q", "llamas") + l.Printf("Testing print: %q", "llamas") + l.Commentf("Testing comment: %q", "llamas") + l.Errorf("Testing error: %q", "llamas") + l.Warningf("Testing warning: %q", "llamas") + l.Promptf("Testing prompt: %q", "llamas") + + want := &bytes.Buffer{} + + fmt.Fprintln(want, `~~~ Testing header: "llamas"`) + fmt.Fprintln(want, `Testing print: "llamas"`) + fmt.Fprintln(want, `# Testing comment: "llamas"`) + fmt.Fprintln(want, `🚨 Error: Testing error: "llamas"`) + fmt.Fprintln(want, "^^^ +++") + fmt.Fprintln(want, `⚠️ Warning: Testing warning: "llamas"`) + fmt.Fprintln(want, "^^^ +++") + + if runtime.GOOS == "windows" { + fmt.Fprintln(want, `> Testing prompt: "llamas"`) + } else { + fmt.Fprintln(want, `$ Testing prompt: "llamas"`) + } + + if diff := cmp.Diff(got.String(), want.String()); diff != "" { + t.Fatalf("shell.WriterLogger output buffer diff (-got +want):\n%s", diff) + } +} + func TestLoggerStreamer(t *testing.T) { got := &bytes.Buffer{} l := shell.NewWriterLogger(got, false, nil)