mirror of
https://github.com/gin-gonic/gin.git
synced 2025-08-06 15:50:30 +08:00
Better debug logging + unit tests
This commit is contained in:
@ -5,11 +5,17 @@
|
||||
package gin
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"io"
|
||||
"log"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
var cachedDebugLogger *log.Logger = nil
|
||||
|
||||
// TODO
|
||||
// func debugRoute(httpMethod, absolutePath string, handlers HandlersChain) {
|
||||
// func debugPrint(format string, values ...interface{}) {
|
||||
@ -22,3 +28,52 @@ func TestIsDebugging(t *testing.T) {
|
||||
SetMode(TestMode)
|
||||
assert.False(t, IsDebugging())
|
||||
}
|
||||
|
||||
func TestDebugPrint(t *testing.T) {
|
||||
var w bytes.Buffer
|
||||
setup(&w)
|
||||
defer teardown()
|
||||
|
||||
SetMode(ReleaseMode)
|
||||
debugPrint("DEBUG this!")
|
||||
SetMode(TestMode)
|
||||
debugPrint("DEBUG this!")
|
||||
assert.Empty(t, w.String())
|
||||
|
||||
SetMode(DebugMode)
|
||||
debugPrint("these are %d %s\n", 2, "error messages")
|
||||
assert.Equal(t, w.String(), "[GIN-debug] these are 2 error messages\n")
|
||||
}
|
||||
|
||||
func TestDebugPrintError(t *testing.T) {
|
||||
var w bytes.Buffer
|
||||
setup(&w)
|
||||
defer teardown()
|
||||
|
||||
SetMode(DebugMode)
|
||||
debugPrintError(nil)
|
||||
assert.Empty(t, w.String())
|
||||
|
||||
debugPrintError(errors.New("this is an error"))
|
||||
assert.Equal(t, w.String(), "[GIN-debug] [ERROR] this is an error\n")
|
||||
}
|
||||
|
||||
func setup(w io.Writer) {
|
||||
SetMode(DebugMode)
|
||||
if cachedDebugLogger == nil {
|
||||
cachedDebugLogger = debugLogger
|
||||
debugLogger = log.New(w, debugLogger.Prefix(), 0)
|
||||
} else {
|
||||
panic("setup failed")
|
||||
}
|
||||
}
|
||||
|
||||
func teardown() {
|
||||
SetMode(TestMode)
|
||||
if cachedDebugLogger != nil {
|
||||
debugLogger = cachedDebugLogger
|
||||
cachedDebugLogger = nil
|
||||
} else {
|
||||
panic("teardown failed")
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user