github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/pkg/logger/func_logger_test.go (about) 1 package logger 2 3 import ( 4 "bytes" 5 "fmt" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestFuncLogger_Level(t *testing.T) { 12 out := &bytes.Buffer{} 13 fl := NewFuncLogger(true, InfoLvl, func(level Level, fields Fields, b []byte) error { 14 _, err := out.Write(b) 15 return err 16 }) 17 18 fl.Infof("info") 19 fl.Debugf("debug") 20 21 s := out.String() 22 require.Contains(t, s, "info") 23 require.NotContains(t, s, "debug") 24 } 25 26 func TestFuncLoggerWriter_Level(t *testing.T) { 27 out := &bytes.Buffer{} 28 fl := NewFuncLogger(true, InfoLvl, func(level Level, fields Fields, b []byte) error { 29 _, err := out.Write(b) 30 return err 31 }) 32 33 _, _ = fl.Writer(InfoLvl).Write([]byte("info\n")) 34 _, _ = fl.Writer(DebugLvl).Write([]byte("debug\n")) 35 36 s := out.String() 37 require.Contains(t, s, "info") 38 require.NotContains(t, s, "debug") 39 } 40 41 func TestOneField(t *testing.T) { 42 out := &bytes.Buffer{} 43 fl := NewFuncLogger(true, InfoLvl, func(level Level, fields Fields, b []byte) error { 44 _, err := fmt.Fprintf(out, "[%v]: %s", fields, string(b)) 45 return err 46 }) 47 48 fl.WithFields(Fields{"a": "1"}).Infof("info") 49 s := out.String() 50 require.Equal(t, s, "[map[a:1]]: info\n") 51 } 52 53 func TestFieldLayering(t *testing.T) { 54 out := &bytes.Buffer{} 55 fl := NewFuncLogger(true, InfoLvl, func(level Level, fields Fields, b []byte) error { 56 _, err := fmt.Fprintf(out, "[%v]: %s", fields, string(b)) 57 return err 58 }) 59 60 l1 := fl.WithFields(Fields{"a": "1"}) 61 l1.WithFields(Fields{"b": "2"}).Infof("line1") 62 l1.WithFields(Fields{"c": "3"}).Infof("line2") 63 s := out.String() 64 require.Equal(t, s, "[map[a:1 b:2]]: line1\n[map[a:1 c:3]]: line2\n") 65 }