github.com/anchore/syft@v1.4.2-0.20240516191711-1bec1fc5d397/cmd/syft/internal/ui/log_writer_test.go (about)

     1  package ui
     2  
     3  import (
     4  	"io"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/anchore/go-logger"
    10  	"github.com/anchore/syft/internal/log"
    11  )
    12  
    13  func Test_logWriter(t *testing.T) {
    14  	w := newLogWriter()
    15  
    16  	orig := log.Get()
    17  	t.Cleanup(func() {
    18  		log.Set(orig)
    19  	})
    20  
    21  	bl := &bufferLogger{}
    22  	log.Set(bl)
    23  
    24  	_, _ = w.Write([]byte("a\nvalue"))
    25  
    26  	expected := []any{"[unexpected stdout] a", "[unexpected stdout] value"}
    27  	require.Equal(t, expected, bl.values)
    28  
    29  	bl.values = nil
    30  	_, _ = w.Write([]byte("some"))
    31  	_, _ = w.Write([]byte("thing"))
    32  
    33  	expected = []any{"[unexpected stdout] some", "[unexpected stdout] thing"}
    34  	require.Equal(t, expected, bl.values)
    35  }
    36  
    37  type bufferLogger struct{ values []any }
    38  
    39  func (l *bufferLogger) Tracef(_ string, _ ...interface{}) {}
    40  
    41  func (l *bufferLogger) Debugf(_ string, _ ...interface{}) {}
    42  
    43  func (l *bufferLogger) Infof(_ string, _ ...interface{}) {}
    44  
    45  func (l *bufferLogger) Warnf(_ string, _ ...interface{}) {}
    46  
    47  func (l *bufferLogger) Errorf(_ string, _ ...interface{}) {}
    48  
    49  func (l *bufferLogger) Trace(vals ...interface{}) {
    50  	l.values = append(l.values, vals...)
    51  }
    52  
    53  func (l *bufferLogger) Debug(_ ...interface{}) {}
    54  
    55  func (l *bufferLogger) Info(_ ...interface{}) {}
    56  
    57  func (l *bufferLogger) Warn(vals ...interface{}) {
    58  	l.values = append(l.values, vals...)
    59  }
    60  
    61  func (l *bufferLogger) Error(_ ...interface{}) {}
    62  
    63  func (l *bufferLogger) WithFields(_ ...interface{}) logger.MessageLogger { return l }
    64  
    65  func (l *bufferLogger) Nested(_ ...interface{}) logger.Logger { return l }
    66  
    67  func (l *bufferLogger) SetOutput(_ io.Writer) {}
    68  
    69  func (l *bufferLogger) GetOutput() io.Writer { return nil }