diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/pruning/algorithm.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/pruning/algorithm.go index b7ed87b439e..b2b1bf81fbd 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/pruning/algorithm.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/pruning/algorithm.go @@ -189,7 +189,7 @@ func skipPrune(x interface{}, s *structuralschema.Structural, opts *PruneOptions case []interface{}: for i, v := range x { opts.appendIndex(i) - prune(v, s.Items, opts) + skipPrune(v, s.Items, opts) opts.parentPath = opts.parentPath[:origPathLen] } default: diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/pruning/algorithm_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/pruning/algorithm_test.go index f050d3eb5f1..c7505478f5e 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/pruning/algorithm_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/pruning/algorithm_test.go @@ -88,7 +88,8 @@ func TestPrune(t *testing.T) { "unspecified": "bar", "unspecifiedObject": {"unspecified": "bar"}, "pruning": {"unspecified": "bar"}, - "preserving": {"unspecified": "bar"} + "preserving": {"unspecified": "bar"}, + "preservingUnknownType": [{"foo":true},{"bar":true}] }, "preservingAdditionalPropertiesNotInheritingXPreserveUnknownFields": { "foo": { @@ -129,6 +130,10 @@ func TestPrune(t *testing.T) { Generic: structuralschema.Generic{Type: "object"}, Extensions: structuralschema.Extensions{XPreserveUnknownFields: true}, }, + "preservingUnknownType": { + Generic: structuralschema.Generic{Type: ""}, + Extensions: structuralschema.Extensions{XPreserveUnknownFields: true}, + }, "pruning": { Generic: structuralschema.Generic{Type: "object"}, }, @@ -177,7 +182,8 @@ func TestPrune(t *testing.T) { "unspecified": "bar", "unspecifiedObject": {"unspecified": "bar"}, "pruning": {}, - "preserving": {"unspecified": "bar"} + "preserving": {"unspecified": "bar"}, + "preservingUnknownType": [{"foo":true},{"bar":true}] }, "preservingAdditionalPropertiesNotInheritingXPreserveUnknownFields": { "foo": {