diff --git a/.golangci.yml b/.golangci.yml index 88cb4fb..120faf2 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -19,12 +19,16 @@ linters-settings: recommendations: - errors forbidigo: + analyze-types: true forbid: - ^fmt.Print(f|ln)?$ - ^log.(Panic|Fatal|Print)(f|ln)?$ - ^os.Exit$ - ^panic$ - ^print(ln)?$ + - p: ^testing.T.(Error|Errorf|Fatal|Fatalf|Fail|FailNow)$ + pkg: ^testing$ + msg: "use testify/assert instead" varnamelen: max-distance: 12 min-name-length: 2 @@ -127,9 +131,12 @@ issues: exclude-dirs-use-default: false exclude-rules: # Allow complex tests and examples, better to be self contained - - path: (examples|main\.go|_test\.go) + - path: (examples|main\.go) linters: + - gocognit - forbidigo + - path: _test\.go + linters: - gocognit # Allow forbidden identifiers in CLI commands diff --git a/go.mod b/go.mod index 327e01f..acc2be9 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,11 @@ module github.com/pion/logging go 1.20 + +require github.com/stretchr/testify v1.10.0 + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/go.sum b/go.sum index e69de29..713a0b4 100644 --- a/go.sum +++ b/go.sum @@ -0,0 +1,10 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/logging_test.go b/logging_test.go index 735ec63..72faea0 100644 --- a/logging_test.go +++ b/logging_test.go @@ -10,6 +10,7 @@ import ( "testing" "github.com/pion/logging" + "github.com/stretchr/testify/assert" ) func testNoDebugLevel(t *testing.T, logger *logging.DefaultLeveledLogger) { @@ -19,13 +20,10 @@ func testNoDebugLevel(t *testing.T, logger *logging.DefaultLeveledLogger) { logger.WithOutput(&outBuf) logger.Debug("this shouldn't be logged") - if outBuf.Len() > 0 { - t.Error("Debug was logged when it shouldn't have been") - } + assert.GreaterOrEqual(t, 0, outBuf.Len(), "Debug was logged when it shouldn't have been") + logger.Debugf("this shouldn't be logged") - if outBuf.Len() > 0 { - t.Error("Debug was logged when it shouldn't have been") - } + assert.GreaterOrEqual(t, 0, outBuf.Len(), "Debug was logged when it shouldn't have been") } func testDebugLevel(t *testing.T, logger *logging.DefaultLeveledLogger) { @@ -36,13 +34,14 @@ func testDebugLevel(t *testing.T, logger *logging.DefaultLeveledLogger) { dbgMsg := "this is a debug message" logger.Debug(dbgMsg) - if !strings.Contains(outBuf.String(), dbgMsg) { - t.Errorf("Expected to find %q in %q, but didn't", dbgMsg, outBuf.String()) - } + assert.Truef(t, strings.Contains(outBuf.String(), dbgMsg), + "Expected to find %q in %q, but didn't", dbgMsg, outBuf.String()) + assert.Truef(t, strings.Contains(outBuf.String(), dbgMsg), + "Expected to find %q in %q, but didn't", dbgMsg, outBuf.String()) + logger.Debugf(dbgMsg) // nolint: govet - if !strings.Contains(outBuf.String(), dbgMsg) { - t.Errorf("Expected to find %q in %q, but didn't", dbgMsg, outBuf.String()) - } + assert.Truef(t, strings.Contains(outBuf.String(), dbgMsg), + "Expected to find %q in %q, but didn't", dbgMsg, outBuf.String()) } func testWarnLevel(t *testing.T, logger *logging.DefaultLeveledLogger) { @@ -53,13 +52,12 @@ func testWarnLevel(t *testing.T, logger *logging.DefaultLeveledLogger) { warnMsg := "this is a warning message" logger.Warn(warnMsg) - if !strings.Contains(outBuf.String(), warnMsg) { - t.Errorf("Expected to find %q in %q, but didn't", warnMsg, outBuf.String()) - } + assert.Truef(t, strings.Contains(outBuf.String(), warnMsg), + "Expected to find %q in %q, but didn't", warnMsg, outBuf.String()) + logger.Warnf(warnMsg) // nolint: govet - if !strings.Contains(outBuf.String(), warnMsg) { - t.Errorf("Expected to find %q in %q, but didn't", warnMsg, outBuf.String()) - } + assert.Truef(t, strings.Contains(outBuf.String(), warnMsg), + "Expected to find %q in %q, but didn't", warnMsg, outBuf.String()) } func testErrorLevel(t *testing.T, logger *logging.DefaultLeveledLogger) { @@ -70,13 +68,12 @@ func testErrorLevel(t *testing.T, logger *logging.DefaultLeveledLogger) { errMsg := "this is an error message" logger.Error(errMsg) - if !strings.Contains(outBuf.String(), errMsg) { - t.Errorf("Expected to find %q in %q, but didn't", errMsg, outBuf.String()) - } + assert.Truef(t, strings.Contains(outBuf.String(), errMsg), + "Expected to find %q in %q but didn't", errMsg, outBuf.String()) + logger.Errorf(errMsg) // nolint: govet - if !strings.Contains(outBuf.String(), errMsg) { - t.Errorf("Expected to find %q in %q, but didn't", errMsg, outBuf.String()) - } + assert.Truef(t, strings.Contains(outBuf.String(), errMsg), + "Expected to find %q in %q but didn't", errMsg, outBuf.String()) } func testTraceLevel(t *testing.T, logger *logging.DefaultLeveledLogger) { @@ -87,13 +84,12 @@ func testTraceLevel(t *testing.T, logger *logging.DefaultLeveledLogger) { traceMsg := "trace message" logger.Trace(traceMsg) - if !strings.Contains(outBuf.String(), traceMsg) { - t.Errorf("Expected to find %q in %q, but didn't", traceMsg, outBuf.String()) - } + assert.Truef(t, strings.Contains(outBuf.String(), traceMsg), + "Expected to find %q in %q but didn't", traceMsg, outBuf.String()) + logger.Tracef(traceMsg) // nolint: govet - if !strings.Contains(outBuf.String(), traceMsg) { - t.Errorf("Expected to find %q in %q, but didn't", traceMsg, outBuf.String()) - } + assert.Truef(t, strings.Contains(outBuf.String(), traceMsg), + "Expected to find %q in %q but didn't", traceMsg, outBuf.String()) } func testInfoLevel(t *testing.T, logger *logging.DefaultLeveledLogger) { @@ -104,13 +100,12 @@ func testInfoLevel(t *testing.T, logger *logging.DefaultLeveledLogger) { infoMsg := "info message" logger.Info(infoMsg) - if !strings.Contains(outBuf.String(), infoMsg) { - t.Errorf("Expected to find %q in %q, but didn't", infoMsg, outBuf.String()) - } + assert.Truef(t, strings.Contains(outBuf.String(), infoMsg), + "Expected to find %q in %q but didn't", infoMsg, outBuf.String()) + logger.Infof(infoMsg) // nolint: govet - if !strings.Contains(outBuf.String(), infoMsg) { - t.Errorf("Expected to find %q in %q, but didn't", infoMsg, outBuf.String()) - } + assert.Truef(t, strings.Contains(outBuf.String(), infoMsg), + "Expected to find %q in %q but didn't", infoMsg, outBuf.String()) } func testAllLevels(t *testing.T, logger *logging.DefaultLeveledLogger) { @@ -134,18 +129,14 @@ func TestDefaultLoggerFactory(t *testing.T) { logger := factory.NewLogger("baz") bazLogger, ok := logger.(*logging.DefaultLeveledLogger) - if !ok { - t.Error("Invalid logger type") - } + assert.True(t, ok, "Invalid logger type") testNoDebugLevel(t, bazLogger) testWarnLevel(t, bazLogger) logger = factory.NewLogger("foo") fooLogger, ok := logger.(*logging.DefaultLeveledLogger) - if !ok { - t.Error("Invalid logger type") - } + assert.True(t, ok, "Invalid logger type") testDebugLevel(t, fooLogger) } @@ -170,34 +161,22 @@ func TestNewDefaultLoggerFactory(t *testing.T) { traceLevel := factory.NewLogger("TRACE") disabledLogger, ok := disabled.(*logging.DefaultLeveledLogger) - if !ok { - t.Error("Missing disabled logger") - } + assert.True(t, ok, "Missing disabled logger") errorLogger, ok := errorLevel.(*logging.DefaultLeveledLogger) - if !ok { - t.Error("Missing error logger") - } + assert.True(t, ok, "Missing error logger") warnLogger, ok := warnLevel.(*logging.DefaultLeveledLogger) - if !ok { - t.Error("Missing warn logger") - } + assert.True(t, ok, "Missing warn logger") infoLogger, ok := infoLevel.(*logging.DefaultLeveledLogger) - if !ok { - t.Error("Missing info logger") - } + assert.True(t, ok, "Missing info logger") debugLogger, ok := debugLevel.(*logging.DefaultLeveledLogger) - if !ok { - t.Error("Missing debug logger") - } + assert.True(t, ok, "Missing debug logger") traceLogger, ok := traceLevel.(*logging.DefaultLeveledLogger) - if !ok { - t.Error("Missing trace logger") - } + assert.True(t, ok, "Missing trace logger") testNoDebugLevel(t, disabledLogger) testNoDebugLevel(t, errorLogger) @@ -217,9 +196,7 @@ func TestNewDefaultLoggerFactoryLogAll(t *testing.T) { factory := logging.NewDefaultLoggerFactory() testAPI, ok := factory.NewLogger("test").(*logging.DefaultLeveledLogger) - if !ok { - t.Error("Invalid logger factory type") - } + assert.True(t, ok, "Invalid logger factory type") testAllLevels(t, testAPI) } @@ -230,19 +207,13 @@ func TestNewDefaultLoggerFactorySpecifcScopes(t *testing.T) { factory := logging.NewDefaultLoggerFactory() feature, ok := factory.NewLogger("feature").(*logging.DefaultLeveledLogger) - if !ok { - t.Error("Invalid logger factory type") - } + assert.True(t, ok, "Invalid logger factory type") rtp, ok := factory.NewLogger("rtp-logger").(*logging.DefaultLeveledLogger) - if !ok { - t.Error("Invalid logger factory type") - } + assert.True(t, ok, "Invalid logger factory type") noScope, ok := factory.NewLogger("no-scope").(*logging.DefaultLeveledLogger) - if !ok { - t.Error("Invalid logger factory type") - } + assert.True(t, ok, "Invalid logger factory type") testDebugLevel(t, feature) testDebugLevel(t, rtp) @@ -262,9 +233,7 @@ func TestLogLevel(t *testing.T) { logLevel := logging.LogLevelDisabled logLevel.Set(logging.LogLevelError) - if logLevel.Get() != logging.LogLevelError { - t.Error("LogLevel was not set to LogLevelError") - } + assert.Equal(t, logging.LogLevelError, logLevel.Get(), "LogLevel was not set to LogLevelError") } func TestLogLevelString(t *testing.T) { @@ -279,9 +248,7 @@ func TestLogLevelString(t *testing.T) { } for level, expectedStr := range expected { - if level.String() != expectedStr { - t.Errorf("Expected %q, got %q", expectedStr, level.String()) - } + assert.Equal(t, expectedStr, level.String()) } }