63 lines
1.2 KiB
Go
63 lines
1.2 KiB
Go
|
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)
|
||
|
})
|
||
|
}
|
||
|
}
|