package flog import ( "bufio" "bytes" "os" "strings" "testing" "github.com/stretchr/testify/assert" ) func TestGetOutput(t *testing.T) { assert.Equal(t, os.Stdout, getOutput()) b := bytes.Buffer{} Output = &b assert.Equal(t, &b, getOutput()) Output = nil } func TestLogFormat(t *testing.T) { b := bytes.Buffer{} MinLevel, Output = LevelDebug, &b Debug(`Testtt`) assert.True(t, strings.HasPrefix(b.String(), `debug [`)) b.Reset() Info(`Testtt`) assert.True(t, strings.HasPrefix(b.String(), `info [`)) MinLevel, Output = LevelInfo, nil } func TestLogLevel(t *testing.T) { b := bytes.Buffer{} MinLevel, Output = LevelWarning, &b Info(`Testtt`) assert.True(t, b.Len() == 0) b.Reset() Warning(`Testtt`) assert.False(t, b.Len() == 0) b.Reset() MinLevel = LevelError Warning(`Testtt`) assert.True(t, b.Len() == 0) b.Reset() MinLevel, Output = LevelInfo, nil } func TestLogf(t *testing.T) { b := bytes.Buffer{} Output = &b Infof(`Test%s-%d`, `tt`, 1) assert.True(t, strings.Contains(b.String(), `Testtt-1`)) Output = nil } func TestStackTrace(t *testing.T) { b := bytes.Buffer{} Output = &b Error(`Testtt`) checkStackTrace(t, &b, `git.fuyu.moe/Fuyu/flog.TestStackTrace`) b.Reset() func() { defer func() { v := recover() if v != nil { Critical(v) } }() panic(`Testtt`) }() checkStackTrace(t, &b, `git.fuyu.moe/Fuyu/flog.TestStackTrace.func1`) Output = nil } func checkStackTrace(t *testing.T, b *bytes.Buffer, f string) { rdr := bufio.NewReader(b) _, _ = rdr.ReadBytes('\n') data, err := rdr.ReadBytes('\n') if err != nil { t.Fatal(`Got error while reading:`, err) } parts := strings.Split(strings.TrimSpace(string(data)), ` `) assert.Equal(t, f, parts[0]) }