diff --git a/pkg/api/serialization_test.go b/pkg/api/serialization_test.go index af83f46654..398e446761 100644 --- a/pkg/api/serialization_test.go +++ b/pkg/api/serialization_test.go @@ -146,6 +146,20 @@ func runTest(t *testing.T, codec runtime.Codec, source runtime.Object) { } } +// For debugging problems +func TestSpecificKind(t *testing.T) { + api.Scheme.Log(t) + kind := "PodList" + item, err := api.Scheme.New("", kind) + if err != nil { + t.Errorf("Couldn't make a %v? %v", kind, err) + return + } + runTest(t, v1beta1.Codec, item) + runTest(t, v1beta2.Codec, item) + api.Scheme.Log(nil) +} + func TestTypes(t *testing.T) { for kind := range api.Scheme.KnownTypes("") { // Try a few times, since runTest uses random values. diff --git a/pkg/conversion/scheme.go b/pkg/conversion/scheme.go index d771126562..3b4f0b9385 100644 --- a/pkg/conversion/scheme.go +++ b/pkg/conversion/scheme.go @@ -86,6 +86,11 @@ func NewScheme() *Scheme { return s } +// Log sets a logger on the scheme. For test purposes only +func (s *Scheme) Log(l DebugLogger) { + s.converter.Debug = l +} + // nameFunc returns the name of the type that we wish to use for encoding. Defaults to // the go name of the type if the type is not registered. func (s *Scheme) nameFunc(t reflect.Type) string { diff --git a/pkg/runtime/scheme.go b/pkg/runtime/scheme.go index 7ad8e6468a..ed3e1b577e 100644 --- a/pkg/runtime/scheme.go +++ b/pkg/runtime/scheme.go @@ -219,6 +219,11 @@ func (s *Scheme) New(versionName, typeName string) (Object, error) { return obj.(Object), nil } +// Log sets a logger on the scheme. For test purposes only +func (s *Scheme) Log(l conversion.DebugLogger) { + s.raw.Log(l) +} + // AddConversionFuncs adds a function to the list of conversion functions. The given // function should know how to convert between two API objects. We deduce how to call // it from the types of its two parameters; see the comment for Converter.Register.