package logext import ( "bytes" "io" "os" "strconv" "testing" "github.com/caarlos0/log" "github.com/charmbracelet/lipgloss" "github.com/goreleaser/goreleaser/internal/golden" "github.com/muesli/termenv" "github.com/stretchr/testify/require" ) func TestWriter(t *testing.T) { lipgloss.SetColorProfile(termenv.Ascii) t.Run("info", func(t *testing.T) { for _, out := range []Output{Info, Error} { t.Run(strconv.Itoa(int(out)), func(t *testing.T) { t.Cleanup(func() { log.Log = log.New(os.Stderr) }) var b bytes.Buffer log.Log = log.New(&b) l, err := io.WriteString(NewWriter(log.Fields{"foo": "bar"}, out), "foo\nbar\n") require.NoError(t, err) require.Equal(t, 8, l) require.Empty(t, b.String()) }) } }) t.Run("debug", func(t *testing.T) { for _, out := range []Output{Info, Error} { t.Run(strconv.Itoa(int(out)), func(t *testing.T) { t.Cleanup(func() { log.Log = log.New(os.Stderr) }) var b bytes.Buffer log.Log = log.New(&b) log.SetLevel(log.DebugLevel) l, err := io.WriteString(NewWriter(log.Fields{"foo": "bar"}, out), "foo\nbar\n") require.NoError(t, err) require.Equal(t, 8, l) golden.RequireEqualTxt(t, b.Bytes()) }) } }) }