| package logrus_test |
| |
| import ( |
| "bytes" |
| "encoding/json" |
| "testing" |
| |
| "github.com/sirupsen/logrus" |
| "github.com/stretchr/testify/require" |
| ) |
| |
| func TestLevelJsonEncoding(t *testing.T) { |
| type X struct { |
| Level logrus.Level |
| } |
| |
| var x X |
| x.Level = logrus.WarnLevel |
| var buf bytes.Buffer |
| enc := json.NewEncoder(&buf) |
| require.NoError(t, enc.Encode(x)) |
| dec := json.NewDecoder(&buf) |
| var y X |
| require.NoError(t, dec.Decode(&y)) |
| } |
| |
| func TestLevelUnmarshalText(t *testing.T) { |
| var u logrus.Level |
| for _, level := range logrus.AllLevels { |
| t.Run(level.String(), func(t *testing.T) { |
| require.NoError(t, u.UnmarshalText([]byte(level.String()))) |
| require.Equal(t, level, u) |
| }) |
| } |
| t.Run("invalid", func(t *testing.T) { |
| require.Error(t, u.UnmarshalText([]byte("invalid"))) |
| }) |
| } |
| |
| func TestLevelMarshalText(t *testing.T) { |
| levelStrings := []string{ |
| "panic", |
| "fatal", |
| "error", |
| "warning", |
| "info", |
| "debug", |
| "trace", |
| } |
| for idx, val := range logrus.AllLevels { |
| level := val |
| t.Run(level.String(), func(t *testing.T) { |
| var cmp logrus.Level |
| b, err := level.MarshalText() |
| require.NoError(t, err) |
| require.Equal(t, levelStrings[idx], string(b)) |
| err = cmp.UnmarshalText(b) |
| require.NoError(t, err) |
| require.Equal(t, level, cmp) |
| }) |
| } |
| } |