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  }