Remove test dependency on swwagger.json to fix client-go repo

Kubernetes-commit: 1095af88e7d30198e13299ea90c5f81b95ec8a3b
This commit is contained in:
Joe Betz 2024-06-25 13:31:03 -04:00 committed by Kubernetes Publisher
parent 8ffa531474
commit dd940936ee

View File

@ -17,13 +17,10 @@ limitations under the License.
package testing package testing
import ( import (
"encoding/json"
"fmt" "fmt"
"math/rand" "math/rand"
"os" "sigs.k8s.io/structured-merge-diff/v4/typed"
"path/filepath"
"strconv" "strconv"
"strings"
"sync" "sync"
"testing" "testing"
@ -40,7 +37,6 @@ import (
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/managedfields" "k8s.io/apimachinery/pkg/util/managedfields"
"k8s.io/apimachinery/pkg/watch" "k8s.io/apimachinery/pkg/watch"
"k8s.io/kube-openapi/pkg/validation/spec"
"k8s.io/utils/ptr" "k8s.io/utils/ptr"
) )
@ -289,7 +285,7 @@ func TestApplyCreate(t *testing.T) {
scheme := runtime.NewScheme() scheme := runtime.NewScheme()
scheme.AddKnownTypes(cmResource.GroupVersion(), &v1.ConfigMap{}) scheme.AddKnownTypes(cmResource.GroupVersion(), &v1.ConfigMap{})
codecs := serializer.NewCodecFactory(scheme) codecs := serializer.NewCodecFactory(scheme)
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), fakeTypeConverter) o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), configMapTypeConverter(scheme))
reaction := ObjectReaction(o) reaction := ObjectReaction(o)
patch := []byte(`{"apiVersion": "v1", "kind": "ConfigMap", "metadata": {"name": "cm-1"}, "data": {"k": "v"}}`) patch := []byte(`{"apiVersion": "v1", "kind": "ConfigMap", "metadata": {"name": "cm-1"}, "data": {"k": "v"}}`)
@ -309,7 +305,7 @@ func TestApplyUpdateMultipleFieldManagers(t *testing.T) {
scheme := runtime.NewScheme() scheme := runtime.NewScheme()
scheme.AddKnownTypes(cmResource.GroupVersion(), &v1.ConfigMap{}) scheme.AddKnownTypes(cmResource.GroupVersion(), &v1.ConfigMap{})
codecs := serializer.NewCodecFactory(scheme) codecs := serializer.NewCodecFactory(scheme)
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), fakeTypeConverter) o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), configMapTypeConverter(scheme))
reaction := ObjectReaction(o) reaction := ObjectReaction(o)
action := NewCreateAction(cmResource, "default", &v1.ConfigMap{ action := NewCreateAction(cmResource, "default", &v1.ConfigMap{
@ -549,24 +545,98 @@ func Test_resourceCovers(t *testing.T) {
} }
} }
var fakeTypeConverter = func() managedfields.TypeConverter { func configMapTypeConverter(scheme *runtime.Scheme) managedfields.TypeConverter {
data, err := os.ReadFile(filepath.Join(strings.Repeat(".."+string(filepath.Separator), 5), parser, err := typed.NewParser(configMapTypedSchema)
"api", "openapi-spec", "swagger.json"))
if err != nil { if err != nil {
panic(err) panic(fmt.Sprintf("Failed to parse schema: %v", err))
} }
swag := spec.Swagger{}
if err := json.Unmarshal(data, &swag); err != nil { return TypeConverter{Scheme: scheme, TypeResolver: parser}
panic(err) }
}
convertedDefs := map[string]*spec.Schema{} var configMapTypedSchema = typed.YAMLObject(`types:
for k, v := range swag.Definitions { - name: io.k8s.api.core.v1.ConfigMap
vCopy := v map:
convertedDefs[k] = &vCopy fields:
} - name: apiVersion
typeConverter, err := managedfields.NewTypeConverter(convertedDefs, false) type:
if err != nil { scalar: string
panic(err) - name: data
} type:
return typeConverter map:
}() elementType:
scalar: string
- name: kind
type:
scalar: string
- name: metadata
type:
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
default: {}
- name: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
map:
fields:
- name: creationTimestamp
type:
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
- name: managedFields
type:
list:
elementType:
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry
elementRelationship: atomic
- name: name
type:
scalar: string
- name: namespace
type:
scalar: string
- name: io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry
map:
fields:
- name: apiVersion
type:
scalar: string
- name: fieldsType
type:
scalar: string
- name: fieldsV1
type:
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1
- name: manager
type:
scalar: string
- name: operation
type:
scalar: string
- name: subresource
type:
scalar: string
- name: time
type:
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
- name: io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1
map:
elementType:
scalar: untyped
list:
elementType:
namedType: __untyped_atomic_
elementRelationship: atomic
map:
elementType:
namedType: __untyped_deduced_
elementRelationship: separable
- name: io.k8s.apimachinery.pkg.apis.meta.v1.Time
scalar: untyped
- name: __untyped_deduced_
scalar: untyped
list:
elementType:
namedType: __untyped_atomic_
elementRelationship: atomic
map:
elementType:
namedType: __untyped_deduced_
elementRelationship: separable
`)