1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2026-06-03 18:35:08 +02:00
Files
opentelemetry-go/log/noop/noop_test.go
T

70 lines
1.8 KiB
Go
Raw Normal View History

2024-02-20 08:16:07 -08:00
// Copyright The OpenTelemetry Authors
2024-02-29 07:05:28 +01:00
// SPDX-License-Identifier: Apache-2.0
2024-02-20 08:16:07 -08:00
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{}),
2026-01-30 19:15:17 +02:00
reflect.TypeFor[log.LoggerProvider](),
2024-02-20 08:16:07 -08:00
))
t.Run("Logger", assertAllExportedMethodNoPanic(
reflect.ValueOf(Logger{}),
2026-01-30 19:15:17 +02:00
reflect.TypeFor[log.Logger](),
2024-02-20 08:16:07 -08:00
))
}
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()
2024-02-20 08:16:07 -08:00
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)
2024-02-20 08:16:07 -08:00
logger := provider.Logger("")
assert.Equal(t, Logger{}, logger)
2024-02-20 08:16:07 -08:00
}