Skip to content

Commit

Permalink
move test functions and test utils functions in their own package
Browse files Browse the repository at this point in the history
  • Loading branch information
dgsb committed Oct 28, 2018
1 parent ec57031 commit fa01b53
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 63 deletions.
5 changes: 4 additions & 1 deletion hook_test.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package logrus
package logrus_test

import (
"bytes"
Expand All @@ -8,6 +8,9 @@ import (

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

. "github.com/sirupsen/logrus"
. "github.com/sirupsen/logrus/internal/testutils"
)

type TestHook struct {
Expand Down
58 changes: 58 additions & 0 deletions internal/testutils/testutils.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package testutils

import (
"bytes"
"encoding/json"
"strconv"
"strings"
"testing"

. "github.com/sirupsen/logrus"

"github.com/stretchr/testify/require"
)

func LogAndAssertJSON(t *testing.T, log func(*Logger), assertions func(fields Fields)) {
var buffer bytes.Buffer
var fields Fields

logger := New()
logger.Out = &buffer
logger.Formatter = new(JSONFormatter)

log(logger)

err := json.Unmarshal(buffer.Bytes(), &fields)
require.Nil(t, err)

assertions(fields)
}

func LogAndAssertText(t *testing.T, log func(*Logger), assertions func(fields map[string]string)) {
var buffer bytes.Buffer

logger := New()
logger.Out = &buffer
logger.Formatter = &TextFormatter{
DisableColors: true,
}

log(logger)

fields := make(map[string]string)
for _, kv := range strings.Split(buffer.String(), " ") {
if !strings.Contains(kv, "=") {
continue
}
kvArr := strings.Split(kv, "=")
key := strings.TrimSpace(kvArr[0])
val := kvArr[1]
if kvArr[1][0] == '"' {
var err error
val, err = strconv.Unquote(val)
require.NoError(t, err)
}
fields[key] = val
}
assertions(fields)
}
79 changes: 17 additions & 62 deletions logrus_test.go
Original file line number Diff line number Diff line change
@@ -1,62 +1,19 @@
package logrus
package logrus_test

import (
"bytes"
"encoding/json"
"io/ioutil"
"strconv"
"strings"
"sync"
"testing"
"time"

"github.com/stretchr/testify/assert"
)

func LogAndAssertJSON(t *testing.T, log func(*Logger), assertions func(fields Fields)) {
var buffer bytes.Buffer
var fields Fields

logger := New()
logger.Out = &buffer
logger.Formatter = new(JSONFormatter)

log(logger)

err := json.Unmarshal(buffer.Bytes(), &fields)
assert.Nil(t, err)

assertions(fields)
}
"github.com/stretchr/testify/require"

func LogAndAssertText(t *testing.T, log func(*Logger), assertions func(fields map[string]string)) {
var buffer bytes.Buffer

logger := New()
logger.Out = &buffer
logger.Formatter = &TextFormatter{
DisableColors: true,
}

log(logger)

fields := make(map[string]string)
for _, kv := range strings.Split(buffer.String(), " ") {
if !strings.Contains(kv, "=") {
continue
}
kvArr := strings.Split(kv, "=")
key := strings.TrimSpace(kvArr[0])
val := kvArr[1]
if kvArr[1][0] == '"' {
var err error
val, err = strconv.Unquote(val)
assert.NoError(t, err)
}
fields[key] = val
}
assertions(fields)
}
. "github.com/sirupsen/logrus"
. "github.com/sirupsen/logrus/internal/testutils"
)

// TestReportCaller verifies that when ReportCaller is set, the 'func' field
// is added, and when it is unset it is not set or modified
Expand All @@ -78,7 +35,8 @@ func TestReportCallerWhenConfigured(t *testing.T) {
}, func(fields Fields) {
assert.Equal(t, "testWithCaller", fields["msg"])
assert.Equal(t, "info", fields["level"])
assert.Equal(t, "testing.tRunner", fields["func"])
assert.Equal(t,
"github.com/sirupsen/logrus_test.TestReportCallerWhenConfigured.func3", fields["func"])
})
}

Expand All @@ -91,9 +49,6 @@ func logSomething(t *testing.T, message string) Fields {
logger.Formatter = new(JSONFormatter)
logger.ReportCaller = true

// override the filter to allow reporting of functions within the logrus package
logrusPackage = "bogusForTesting"

entry := logger.WithFields(Fields{
"foo": "bar",
})
Expand All @@ -103,8 +58,6 @@ func logSomething(t *testing.T, message string) Fields {
err := json.Unmarshal(buffer.Bytes(), &fields)
assert.Nil(t, err)

// now clear the override so as not to mess with other usage
logrusPackage = ""
return fields
}

Expand All @@ -114,7 +67,7 @@ func TestReportCallerHelperDirect(t *testing.T) {

assert.Equal(t, "direct", fields["msg"])
assert.Equal(t, "info", fields["level"])
assert.Regexp(t, "github.com/.*/logrus.logSomething", fields["func"])
assert.Regexp(t, "github.com/.*/logrus_test.logSomething", fields["func"])
}

// TestReportCallerHelperDirect - verify reference when logging from a function called via pointer
Expand All @@ -124,7 +77,7 @@ func TestReportCallerHelperViaPointer(t *testing.T) {

assert.Equal(t, "via pointer", fields["msg"])
assert.Equal(t, "info", fields["level"])
assert.Regexp(t, "github.com/.*/logrus.logSomething", fields["func"])
assert.Regexp(t, "github.com/.*/logrus_test.logSomething", fields["func"])
}

func TestPrint(t *testing.T) {
Expand Down Expand Up @@ -286,7 +239,7 @@ func TestWithTimeShouldOverrideTime(t *testing.T) {
LogAndAssertJSON(t, func(log *Logger) {
log.WithTime(now).Info("foobar")
}, func(fields Fields) {
assert.Equal(t, fields["time"], now.Format(defaultTimestampFormat))
assert.Equal(t, fields["time"], now.Format(time.RFC3339))
})
}

Expand All @@ -296,7 +249,7 @@ func TestWithTimeShouldNotOverrideFields(t *testing.T) {
LogAndAssertJSON(t, func(log *Logger) {
log.WithField("herp", "derp").WithTime(now).Info("blah")
}, func(fields Fields) {
assert.Equal(t, fields["time"], now.Format(defaultTimestampFormat))
assert.Equal(t, fields["time"], now.Format(time.RFC3339))
assert.Equal(t, fields["herp"], "derp")
})
}
Expand All @@ -307,7 +260,7 @@ func TestWithFieldShouldNotOverrideTime(t *testing.T) {
LogAndAssertJSON(t, func(log *Logger) {
log.WithTime(now).WithField("herp", "derp").Info("blah")
}, func(fields Fields) {
assert.Equal(t, fields["time"], now.Format(defaultTimestampFormat))
assert.Equal(t, fields["time"], now.Format(time.RFC3339))
assert.Equal(t, fields["herp"], "derp")
})
}
Expand Down Expand Up @@ -385,11 +338,12 @@ func TestNestedLoggingReportsCorrectCaller(t *testing.T) {
llog.Info("looks delicious")

err := json.Unmarshal(buffer.Bytes(), &fields)
assert.NoError(t, err, "should have decoded first message")
require.NoError(t, err, "should have decoded first message")
assert.Equal(t, len(fields), 5, "should have msg/time/level/func/context fields")
assert.Equal(t, "looks delicious", fields["msg"])
assert.Equal(t, "eating raw fish", fields["context"])
assert.Equal(t, "testing.tRunner", fields["func"])
assert.Equal(t,
"github.com/sirupsen/logrus_test.TestNestedLoggingReportsCorrectCaller", fields["func"])

buffer.Reset()

Expand All @@ -415,7 +369,8 @@ func TestNestedLoggingReportsCorrectCaller(t *testing.T) {
assert.Equal(t, "Brown", fields["James"])
assert.Equal(t, "The hardest workin' man in show business", fields["msg"])
assert.Nil(t, fields["fields.msg"], "should not have prefixed previous `msg` entry")
assert.Equal(t, "testing.tRunner", fields["func"])
assert.Equal(t,
"github.com/sirupsen/logrus_test.TestNestedLoggingReportsCorrectCaller", fields["func"])

logger.ReportCaller = false // return to default value
}
Expand Down

0 comments on commit fa01b53

Please sign in to comment.