Browse Source

lib/logger: Add test for stack level (#5430)

Jakob Borg 6 years ago
parent
commit
04070b4848
2 changed files with 21 additions and 1 deletions
  1. 6 1
      lib/logger/logger.go
  2. 15 0
      lib/logger/logger_test.go

+ 6 - 1
lib/logger/logger.go

@@ -6,6 +6,7 @@ package logger
 
 import (
 	"fmt"
+	"io"
 	"io/ioutil"
 	"log"
 	"os"
@@ -69,6 +70,10 @@ type logger struct {
 var DefaultLogger = New()
 
 func New() Logger {
+	return newLogger(os.Stdout)
+}
+
+func newLogger(w io.Writer) Logger {
 	res := &logger{
 		facilities: make(map[string]string),
 		debug:      make(map[string]struct{}),
@@ -78,7 +83,7 @@ func New() Logger {
 		res.logger = log.New(ioutil.Discard, "", 0)
 		return res
 	}
-	res.logger = log.New(os.Stdout, "", DefaultFlags)
+	res.logger = log.New(w, "", DefaultFlags)
 	return res
 }
 

+ 15 - 0
lib/logger/logger_test.go

@@ -4,7 +4,9 @@
 package logger
 
 import (
+	"bytes"
 	"fmt"
+	"log"
 	"strings"
 	"testing"
 	"time"
@@ -149,5 +151,18 @@ func TestRecorder(t *testing.T) {
 	if lines[0].Message != "hah" {
 		t.Errorf("incorrect line: %s", lines[0].Message)
 	}
+}
+
+func TestStackLevel(t *testing.T) {
+	b := new(bytes.Buffer)
+	l := newLogger(b)
 
+	l.SetFlags(log.Lshortfile)
+	l.Infoln("testing")
+	res := b.String()
+
+	if !strings.Contains(res, "logger_test.go:") {
+		t.Logf("%q", res)
+		t.Error("Should identify this file as the source (bad level?)")
+	}
 }