Skip to content

Commit

Permalink
enhance logger test
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnRoesler committed Nov 14, 2023
1 parent 6d72a21 commit 431ab2f
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 36 deletions.
26 changes: 13 additions & 13 deletions logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,20 @@ import (
// or implement your own Logger. The actual level of Log that is logged
// is handled by the implementation.
type Logger interface {
Debug(msg string, args ...interface{})
Error(msg string, args ...interface{})
Info(msg string, args ...interface{})
Warn(msg string, args ...interface{})
Debug(msg string, args ...any)
Error(msg string, args ...any)
Info(msg string, args ...any)
Warn(msg string, args ...any)
}

var _ Logger = (*noOpLogger)(nil)

type noOpLogger struct{}

func (l noOpLogger) Debug(_ string, _ ...interface{}) {}
func (l noOpLogger) Error(_ string, _ ...interface{}) {}
func (l noOpLogger) Info(_ string, _ ...interface{}) {}
func (l noOpLogger) Warn(_ string, _ ...interface{}) {}
func (l noOpLogger) Debug(_ string, _ ...any) {}
func (l noOpLogger) Error(_ string, _ ...any) {}
func (l noOpLogger) Info(_ string, _ ...any) {}
func (l noOpLogger) Warn(_ string, _ ...any) {}

var _ Logger = (*logger)(nil)

Expand All @@ -51,35 +51,35 @@ func NewLogger(level LogLevel) Logger {
return &logger{level: level}
}

func (l *logger) Debug(msg string, args ...interface{}) {
func (l *logger) Debug(msg string, args ...any) {
if l.level < LogLevelDebug {
return
}
log.Printf("DEBUG: %s%s\n", msg, logFormatArgs(args...))
}

func (l *logger) Error(msg string, args ...interface{}) {
func (l *logger) Error(msg string, args ...any) {
if l.level < LogLevelError {
return
}
log.Printf("ERROR: %s%s\n", msg, logFormatArgs(args...))
}

func (l *logger) Info(msg string, args ...interface{}) {
func (l *logger) Info(msg string, args ...any) {
if l.level < LogLevelInfo {
return
}
log.Printf("INFO: %s%s\n", msg, logFormatArgs(args...))
}

func (l *logger) Warn(msg string, args ...interface{}) {
func (l *logger) Warn(msg string, args ...any) {
if l.level < LogLevelWarn {
return
}
log.Printf("WARN: %s%s\n", msg, logFormatArgs(args...))
}

func logFormatArgs(args ...interface{}) string {
func logFormatArgs(args ...any) string {
if len(args) == 0 {
return ""
}
Expand Down
75 changes: 52 additions & 23 deletions logger_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package gocron
import (
"bytes"
"log"
"strings"
"testing"

"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -45,32 +46,60 @@ func TestNewLogger(t *testing.T) {
log.SetOutput(&results)
l := NewLogger(tt.level)

l.Debug("debug", "arg1", "arg2")
if tt.level >= LogLevelDebug {
assert.Contains(t, results.String(), "DEBUG: debug, arg1=arg2\n")
} else {
assert.Empty(t, results.String())
}
var noArgs []any
oneArg := []any{"arg1"}
twoArgs := []any{"arg1", "arg2"}
var noArgsStr []string
oneArgStr := []string{"arg1"}
twoArgsStr := []string{"arg1", "arg2"}

l.Info("info", "arg1", "arg2")
if tt.level >= LogLevelInfo {
assert.Contains(t, results.String(), "INFO: info, arg1=arg2\n")
} else {
assert.Empty(t, results.String())
}
for _, args := range []struct {
argsAny []any
argsStr []string
}{
{noArgs, noArgsStr},
{oneArg, oneArgStr},
{twoArgs, twoArgsStr},
} {
l.Debug("debug", args.argsAny...)
if tt.level >= LogLevelDebug {
r := results.String()
assert.Contains(t, r, "DEBUG: debug")
assert.Contains(t, r, strings.Join(args.argsStr, "="))
} else {
assert.Empty(t, results.String())
}
results.Reset()

l.Warn("warn", "arg1", "arg2")
if tt.level >= LogLevelWarn {
assert.Contains(t, results.String(), "WARN: warn, arg1=arg2\n")
} else {
assert.Empty(t, results.String())
}
l.Info("info", args.argsAny...)
if tt.level >= LogLevelInfo {
r := results.String()
assert.Contains(t, r, "INFO: info")
assert.Contains(t, r, strings.Join(args.argsStr, "="))
} else {
assert.Empty(t, results.String())
}
results.Reset()

l.Warn("warn", args.argsAny...)
if tt.level >= LogLevelWarn {
r := results.String()
assert.Contains(t, r, "WARN: warn")
assert.Contains(t, r, strings.Join(args.argsStr, "="))
} else {
assert.Empty(t, results.String())
}
results.Reset()

l.Error("error", "arg1", "arg2")
if tt.level >= LogLevelError {
assert.Contains(t, results.String(), "ERROR: error, arg1=arg2\n")
} else {
assert.Empty(t, results.String())
l.Error("error", args.argsAny...)
if tt.level >= LogLevelError {
r := results.String()
assert.Contains(t, r, "ERROR: error")
assert.Contains(t, r, strings.Join(args.argsStr, "="))
} else {
assert.Empty(t, results.String())
}
results.Reset()
}
})
}
Expand Down

0 comments on commit 431ab2f

Please sign in to comment.