You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-zero/core/logx/syslog_test.go

53 lines
947 B
Go

4 years ago
package logx
import (
"encoding/json"
"log"
"strings"
"sync/atomic"
"testing"
"github.com/stretchr/testify/assert"
)
const testlog = "Stay hungry, stay foolish."
func TestCollectSysLog(t *testing.T) {
CollectSysLog()
content := getContent(captureOutput(func() {
log.Print(testlog)
4 years ago
}))
assert.True(t, strings.Contains(content, testlog))
}
func TestRedirector(t *testing.T) {
var r redirector
content := getContent(captureOutput(func() {
r.Write([]byte(testlog))
}))
assert.Equal(t, testlog, content)
}
func captureOutput(f func()) string {
writer := new(mockWriter)
infoLog = writer
atomic.StoreUint32(&initialized, 1)
4 years ago
4 years ago
prevLevel := atomic.LoadUint32(&logLevel)
SetLevel(InfoLevel)
4 years ago
f()
4 years ago
SetLevel(prevLevel)
4 years ago
return writer.builder.String()
}
func getContent(jsonStr string) string {
var entry logEntry
json.Unmarshal([]byte(jsonStr), &entry)
val, ok := entry.Content.(string)
if ok {
return val
}
return ""
4 years ago
}