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
import (
"encoding/json"
"fmt"
"math/rand"
"os"
"path/filepath"
"sigs.k8s.io/structured-merge-diff/v4/typed"
"strconv"
"strings"
"sync"
"testing"
@ -40,7 +37,6 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/managedfields"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/kube-openapi/pkg/validation/spec"
"k8s.io/utils/ptr"
)
@ -289,7 +285,7 @@ func TestApplyCreate(t *testing.T) {
scheme := runtime.NewScheme()
scheme.AddKnownTypes(cmResource.GroupVersion(), &v1.ConfigMap{})
codecs := serializer.NewCodecFactory(scheme)
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), fakeTypeConverter)
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), configMapTypeConverter(scheme))
reaction := ObjectReaction(o)
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.AddKnownTypes(cmResource.GroupVersion(), &v1.ConfigMap{})
codecs := serializer.NewCodecFactory(scheme)
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), fakeTypeConverter)
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), configMapTypeConverter(scheme))
reaction := ObjectReaction(o)
action := NewCreateAction(cmResource, "default", &v1.ConfigMap{
@ -549,24 +545,98 @@ func Test_resourceCovers(t *testing.T) {
}
}
var fakeTypeConverter = func() managedfields.TypeConverter {
data, err := os.ReadFile(filepath.Join(strings.Repeat(".."+string(filepath.Separator), 5),
"api", "openapi-spec", "swagger.json"))
func configMapTypeConverter(scheme *runtime.Scheme) managedfields.TypeConverter {
parser, err := typed.NewParser(configMapTypedSchema)
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 {
panic(err)
return TypeConverter{Scheme: scheme, TypeResolver: parser}
}
convertedDefs := map[string]*spec.Schema{}
for k, v := range swag.Definitions {
vCopy := v
convertedDefs[k] = &vCopy
}
typeConverter, err := managedfields.NewTypeConverter(convertedDefs, false)
if err != nil {
panic(err)
}
return typeConverter
}()
var configMapTypedSchema = typed.YAMLObject(`types:
- name: io.k8s.api.core.v1.ConfigMap
map:
fields:
- name: apiVersion
type:
scalar: string
- name: data
type:
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
`)