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  }