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  }