Skip to content

Commit 1095af8

Browse files
committed
Remove test dependency on swwagger.json to fix client-go repo
1 parent 8b72795 commit 1095af8

File tree

1 file changed

+96
-26
lines changed

1 file changed

+96
-26
lines changed

staging/src/k8s.io/client-go/testing/fixture_test.go

Lines changed: 96 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,10 @@ limitations under the License.
1717
package testing
1818

1919
import (
20-
"encoding/json"
2120
"fmt"
2221
"math/rand"
23-
"os"
24-
"path/filepath"
22+
"sigs.k8s.io/structured-merge-diff/v4/typed"
2523
"strconv"
26-
"strings"
2724
"sync"
2825
"testing"
2926

@@ -40,7 +37,6 @@ import (
4037
"k8s.io/apimachinery/pkg/types"
4138
"k8s.io/apimachinery/pkg/util/managedfields"
4239
"k8s.io/apimachinery/pkg/watch"
43-
"k8s.io/kube-openapi/pkg/validation/spec"
4440
"k8s.io/utils/ptr"
4541
)
4642

@@ -289,7 +285,7 @@ func TestApplyCreate(t *testing.T) {
289285
scheme := runtime.NewScheme()
290286
scheme.AddKnownTypes(cmResource.GroupVersion(), &v1.ConfigMap{})
291287
codecs := serializer.NewCodecFactory(scheme)
292-
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), fakeTypeConverter)
288+
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), configMapTypeConverter(scheme))
293289

294290
reaction := ObjectReaction(o)
295291
patch := []byte(`{"apiVersion": "v1", "kind": "ConfigMap", "metadata": {"name": "cm-1"}, "data": {"k": "v"}}`)
@@ -309,7 +305,7 @@ func TestApplyUpdateMultipleFieldManagers(t *testing.T) {
309305
scheme := runtime.NewScheme()
310306
scheme.AddKnownTypes(cmResource.GroupVersion(), &v1.ConfigMap{})
311307
codecs := serializer.NewCodecFactory(scheme)
312-
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), fakeTypeConverter)
308+
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), configMapTypeConverter(scheme))
313309

314310
reaction := ObjectReaction(o)
315311
action := NewCreateAction(cmResource, "default", &v1.ConfigMap{
@@ -549,24 +545,98 @@ func Test_resourceCovers(t *testing.T) {
549545
}
550546
}
551547

552-
var fakeTypeConverter = func() managedfields.TypeConverter {
553-
data, err := os.ReadFile(filepath.Join(strings.Repeat(".."+string(filepath.Separator), 5),
554-
"api", "openapi-spec", "swagger.json"))
548+
func configMapTypeConverter(scheme *runtime.Scheme) managedfields.TypeConverter {
549+
parser, err := typed.NewParser(configMapTypedSchema)
555550
if err != nil {
556-
panic(err)
551+
panic(fmt.Sprintf("Failed to parse schema: %v", err))
557552
}
558-
swag := spec.Swagger{}
559-
if err := json.Unmarshal(data, &swag); err != nil {
560-
panic(err)
561-
}
562-
convertedDefs := map[string]*spec.Schema{}
563-
for k, v := range swag.Definitions {
564-
vCopy := v
565-
convertedDefs[k] = &vCopy
566-
}
567-
typeConverter, err := managedfields.NewTypeConverter(convertedDefs, false)
568-
if err != nil {
569-
panic(err)
570-
}
571-
return typeConverter
572-
}()
553+
554+
return TypeConverter{Scheme: scheme, TypeResolver: parser}
555+
}
556+
557+
var configMapTypedSchema = typed.YAMLObject(`types:
558+
- name: io.k8s.api.core.v1.ConfigMap
559+
map:
560+
fields:
561+
- name: apiVersion
562+
type:
563+
scalar: string
564+
- name: data
565+
type:
566+
map:
567+
elementType:
568+
scalar: string
569+
- name: kind
570+
type:
571+
scalar: string
572+
- name: metadata
573+
type:
574+
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
575+
default: {}
576+
- name: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
577+
map:
578+
fields:
579+
- name: creationTimestamp
580+
type:
581+
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
582+
- name: managedFields
583+
type:
584+
list:
585+
elementType:
586+
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry
587+
elementRelationship: atomic
588+
- name: name
589+
type:
590+
scalar: string
591+
- name: namespace
592+
type:
593+
scalar: string
594+
- name: io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry
595+
map:
596+
fields:
597+
- name: apiVersion
598+
type:
599+
scalar: string
600+
- name: fieldsType
601+
type:
602+
scalar: string
603+
- name: fieldsV1
604+
type:
605+
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1
606+
- name: manager
607+
type:
608+
scalar: string
609+
- name: operation
610+
type:
611+
scalar: string
612+
- name: subresource
613+
type:
614+
scalar: string
615+
- name: time
616+
type:
617+
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
618+
- name: io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1
619+
map:
620+
elementType:
621+
scalar: untyped
622+
list:
623+
elementType:
624+
namedType: __untyped_atomic_
625+
elementRelationship: atomic
626+
map:
627+
elementType:
628+
namedType: __untyped_deduced_
629+
elementRelationship: separable
630+
- name: io.k8s.apimachinery.pkg.apis.meta.v1.Time
631+
scalar: untyped
632+
- name: __untyped_deduced_
633+
scalar: untyped
634+
list:
635+
elementType:
636+
namedType: __untyped_atomic_
637+
elementRelationship: atomic
638+
map:
639+
elementType:
640+
namedType: __untyped_deduced_
641+
elementRelationship: separable
642+
`)

0 commit comments

Comments
 (0)