package log import ( "bytes" "context" "strings" "testing" "github.com/stretchr/testify/assert" ) func TestLog(t *testing.T) { testCases := []struct { desc string fields map[string]string expected string }{ { desc: "Log with one field", fields: map[string]string{ "foo": "bar", }, expected: ` level=error msg="message test" foo=bar$`, }, { desc: "Log with two fields", fields: map[string]string{ "foo": "bar", "oof": "rab", }, expected: ` level=error msg="message test" foo=bar oof=rab$`, }, { desc: "Log without field", fields: map[string]string{}, expected: ` level=error msg="message test"$`, }, } for _, test := range testCases { test := test t.Run(test.desc, func(t *testing.T) { var buffer bytes.Buffer SetOutput(&buffer) ctx := context.Background() for key, value := range test.fields { ctx = With(ctx, Str(key, value)) } FromContext(ctx).Error("message test") assert.Regexp(t, test.expected, strings.TrimSpace(buffer.String())) }) } }