github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/pkg/logger/deferred_test.go (about) 1 package logger 2 3 import ( 4 "bytes" 5 "context" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestDeferredLogger(t *testing.T) { 14 out1 := &bytes.Buffer{} 15 out2 := &bytes.Buffer{} 16 17 logger1 := NewLogger(DebugLvl, out1) 18 ctx := WithLogger(context.Background(), logger1) 19 deferLogger := NewDeferredLogger(ctx) 20 logger2 := NewLogger(DebugLvl, out2) 21 22 deferLogger.Infof("Hello %s", "world") 23 deferLogger.SetOutput(logger2) 24 deferLogger.Infof("Goodbye %s", "world") 25 26 assert.Equal(t, "", out1.String()) 27 assert.Equal(t, "Hello world\nGoodbye world\n", out2.String()) 28 } 29 30 func TestDeferredLoggerOriginal(t *testing.T) { 31 out1 := &bytes.Buffer{} 32 33 logger1 := NewLogger(DebugLvl, out1) 34 ctx := WithLogger(context.Background(), logger1) 35 deferLogger := NewDeferredLogger(ctx) 36 37 deferLogger.Infof("Hello %s", "world") 38 deferLogger.SetOutput(deferLogger.Original()) 39 deferLogger.Infof("Goodbye %s", "world") 40 41 assert.Equal(t, "Hello world\nGoodbye world\n", out1.String()) 42 } 43 44 func TestDeferredLoggerCopiesBytes(t *testing.T) { 45 out := &bytes.Buffer{} 46 logger := NewLogger(DebugLvl, out) 47 ctx := WithLogger(context.Background(), logger) 48 deferLogger := NewDeferredLogger(ctx) 49 50 data := make([]byte, 0, 100) 51 data2 := append(data, []byte("Hello")...) 52 _, err := deferLogger.Writer(DebugLvl).Write(data2) 53 require.NoError(t, err) 54 data3 := append(data, []byte("Goodbye")...) 55 _, err = deferLogger.Writer(DebugLvl).Write(data3) 56 require.NoError(t, err) 57 58 assert.Equal(t, "", out.String()) 59 60 deferLogger.SetOutput(logger) 61 assert.Equal(t, "HelloGoodbye", out.String()) 62 }