github.com/stevenmatthewt/agent@v3.5.4+incompatible/bootstrap/shell/logger_test.go (about) 1 package shell_test 2 3 import ( 4 "bytes" 5 "fmt" 6 "runtime" 7 "testing" 8 9 "github.com/buildkite/agent/bootstrap/shell" 10 ) 11 12 func TestAnsiLogger(t *testing.T) { 13 b := &bytes.Buffer{} 14 l := shell.WriterLogger{Writer: b, Ansi: false} 15 16 l.Headerf("Testing header: %q", "llamas") 17 l.Printf("Testing print: %q", "llamas") 18 l.Commentf("Testing comment: %q", "llamas") 19 l.Errorf("Testing error: %q", "llamas") 20 l.Warningf("Testing warning: %q", "llamas") 21 l.Promptf("Testing prompt: %q", "llamas") 22 23 expected := &bytes.Buffer{} 24 25 fmt.Fprintln(expected, `~~~ Testing header: "llamas"`) 26 fmt.Fprintln(expected, `Testing print: "llamas"`) 27 fmt.Fprintln(expected, `# Testing comment: "llamas"`) 28 fmt.Fprintln(expected, `🚨 Error: Testing error: "llamas"`) 29 fmt.Fprintln(expected, `^^^ +++`) 30 fmt.Fprintln(expected, `⚠️ Warning: Testing warning: "llamas"`) 31 fmt.Fprintln(expected, `^^^ +++`) 32 33 if runtime.GOOS == "windows" { 34 fmt.Fprintln(expected, `> Testing prompt: "llamas"`) 35 } else { 36 37 fmt.Fprintln(expected, `$ Testing prompt: "llamas"`) 38 } 39 40 actual := b.String() 41 42 if actual != expected.String() { 43 t.Fatalf("Expected %q, got %q", expected.String(), actual) 44 } 45 } 46 47 func TestLoggerStreamer(t *testing.T) { 48 b := &bytes.Buffer{} 49 l := &shell.WriterLogger{Writer: b, Ansi: false} 50 51 streamer := shell.NewLoggerStreamer(l) 52 streamer.Prefix = "TEST>" 53 54 fmt.Fprintf(streamer, "#") 55 fmt.Fprintln(streamer, " Rest of the line") 56 fmt.Fprintf(streamer, "#") 57 fmt.Fprintln(streamer, " And another") 58 fmt.Fprint(streamer, "# No line end") 59 60 if err := streamer.Close(); err != nil { 61 t.Fatal(err) 62 } 63 64 expected := &bytes.Buffer{} 65 66 fmt.Fprintln(expected, `TEST># Rest of the line`) 67 fmt.Fprintln(expected, `TEST># And another`) 68 fmt.Fprintln(expected, `TEST># No line end`) 69 70 actual := b.String() 71 72 if actual != expected.String() { 73 t.Fatalf("Expected %q, got %q", expected.String(), actual) 74 } 75 }