...
1
16
17 package api
18
19 import (
20 "reflect"
21 "strconv"
22 "testing"
23
24 "github.com/stretchr/testify/require"
25
26 apiextensionv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
27 apiextensionv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
28 "k8s.io/apimachinery/pkg/api/apitesting/roundtrip"
29 "k8s.io/apimachinery/pkg/runtime"
30 "k8s.io/apimachinery/pkg/runtime/schema"
31 _ "k8s.io/apimachinery/pkg/runtime/serializer"
32 )
33
34 var groups = []runtime.SchemeBuilder{
35 apiextensionv1.SchemeBuilder,
36 apiextensionv1beta1.SchemeBuilder,
37 }
38
39 func TestCompatibility(t *testing.T) {
40 scheme := runtime.NewScheme()
41 for _, builder := range groups {
42 require.NoError(t, builder.AddToScheme(scheme))
43 }
44
45 opts := roundtrip.NewCompatibilityTestOptions(scheme)
46
47
48 opts.FillFuncs = map[reflect.Type]roundtrip.FillFunc{
49 reflect.TypeOf(&apiextensionv1.JSON{}): func(s string, i int, obj interface{}) {
50 obj.(*apiextensionv1.JSON).Raw = []byte(strconv.Quote(s + "Value"))
51 },
52 reflect.TypeOf(&apiextensionv1beta1.JSON{}): func(s string, i int, obj interface{}) {
53 obj.(*apiextensionv1beta1.JSON).Raw = []byte(strconv.Quote(s + "Value"))
54 },
55 }
56
57 opts.Complete(t)
58
59
60 filteredKinds := []schema.GroupVersionKind{}
61 for _, gvk := range opts.Kinds {
62 if gvk.Group == apiextensionv1.SchemeGroupVersion.Group {
63 filteredKinds = append(filteredKinds, gvk)
64 }
65 }
66 opts.Kinds = filteredKinds
67
68 opts.Run(t)
69 }
70
View as plain text