You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2026-06-03 18:35:08 +02:00
3264bf171b
Enable the [`modernize`](https://golangci-lint.run/docs/linters/configuration/#modernize) linter in the golangci-lint configuration and fix the reported issues by running `golangci-lint run --enable-only modernize --fix`. The `modernize` linter is internally the same as [gopls modernize](https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/modernize). Similar to #7089.
70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package noop // import "go.opentelemetry.io/otel/log/noop"
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"go.opentelemetry.io/otel/log"
|
|
)
|
|
|
|
func TestImplementationNoPanics(t *testing.T) {
|
|
// Check that if type has an embedded interface and that interface has
|
|
// methods added to it than the No-Op implementation implements them.
|
|
t.Run("LoggerProvider", assertAllExportedMethodNoPanic(
|
|
reflect.ValueOf(LoggerProvider{}),
|
|
reflect.TypeFor[log.LoggerProvider](),
|
|
))
|
|
t.Run("Logger", assertAllExportedMethodNoPanic(
|
|
reflect.ValueOf(Logger{}),
|
|
reflect.TypeFor[log.Logger](),
|
|
))
|
|
}
|
|
|
|
func assertAllExportedMethodNoPanic(rVal reflect.Value, rType reflect.Type) func(*testing.T) {
|
|
return func(t *testing.T) {
|
|
for n := 0; n < rType.NumMethod(); n++ {
|
|
mType := rType.Method(n)
|
|
if !mType.IsExported() {
|
|
t.Logf("ignoring unexported %s", mType.Name)
|
|
continue
|
|
}
|
|
m := rVal.MethodByName(mType.Name)
|
|
if !m.IsValid() {
|
|
t.Errorf("unknown method for %s: %s", rVal.Type().Name(), mType.Name)
|
|
}
|
|
|
|
numIn := mType.Type.NumIn()
|
|
if mType.Type.IsVariadic() {
|
|
numIn--
|
|
}
|
|
args := make([]reflect.Value, numIn)
|
|
ctx := t.Context()
|
|
for i := range args {
|
|
aType := mType.Type.In(i)
|
|
if aType.Name() == "Context" {
|
|
// Do not panic on a nil context.
|
|
args[i] = reflect.ValueOf(ctx)
|
|
} else {
|
|
args[i] = reflect.New(aType).Elem()
|
|
}
|
|
}
|
|
|
|
assert.NotPanicsf(t, func() {
|
|
_ = m.Call(args)
|
|
}, "%s.%s", rVal.Type().Name(), mType.Name)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestNewTracerProvider(t *testing.T) {
|
|
provider := NewLoggerProvider()
|
|
assert.Equal(t, LoggerProvider{}, provider)
|
|
logger := provider.Logger("")
|
|
assert.Equal(t, Logger{}, logger)
|
|
}
|