Merge pull request #125706 from jpbetz/fix-fixture-test
Remove test dependency on swagger.json to fix client-go tests
This commit is contained in:
		@@ -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
 | 
				
			||||||
 | 
					`)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user