github.com/triarius/goreleaser@v1.12.5/internal/logext/writer_test.go (about)

     1  package logext
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  	"os"
     7  	"strconv"
     8  	"testing"
     9  
    10  	"github.com/caarlos0/log"
    11  	"github.com/charmbracelet/lipgloss"
    12  	"github.com/triarius/goreleaser/internal/golden"
    13  	"github.com/muesli/termenv"
    14  	"github.com/stretchr/testify/require"
    15  )
    16  
    17  func TestWriter(t *testing.T) {
    18  	lipgloss.SetColorProfile(termenv.Ascii)
    19  
    20  	t.Run("info", func(t *testing.T) {
    21  		for _, out := range []Output{Info, Error} {
    22  			t.Run(strconv.Itoa(int(out)), func(t *testing.T) {
    23  				t.Cleanup(func() {
    24  					log.Log = log.New(os.Stderr)
    25  				})
    26  				var b bytes.Buffer
    27  				log.Log = log.New(&b)
    28  				l, err := io.WriteString(NewWriter(log.Fields{"foo": "bar"}, out), "foo\nbar\n")
    29  				require.NoError(t, err)
    30  				require.Equal(t, 8, l)
    31  				require.Empty(t, b.String())
    32  			})
    33  		}
    34  	})
    35  
    36  	t.Run("debug", func(t *testing.T) {
    37  		for _, out := range []Output{Info, Error} {
    38  			t.Run(strconv.Itoa(int(out)), func(t *testing.T) {
    39  				t.Cleanup(func() {
    40  					log.Log = log.New(os.Stderr)
    41  				})
    42  				var b bytes.Buffer
    43  				log.Log = log.New(&b)
    44  				log.SetLevel(log.DebugLevel)
    45  				l, err := io.WriteString(NewWriter(log.Fields{"foo": "bar"}, out), "foo\nbar\n")
    46  				require.NoError(t, err)
    47  				require.Equal(t, 8, l)
    48  				golden.RequireEqualTxt(t, b.Bytes())
    49  			})
    50  		}
    51  	})
    52  }