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 }