@@ -3,10 +3,21 @@ package envtest
3
3
import (
4
4
"reflect"
5
5
6
+ apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
7
+ apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
6
8
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
7
9
"k8s.io/apimachinery/pkg/runtime"
8
10
)
9
11
12
+ var (
13
+ crdScheme = runtime .NewScheme ()
14
+ )
15
+
16
+ func init () {
17
+ _ = apiextensionsv1 .AddToScheme (crdScheme )
18
+ _ = apiextensionsv1beta1 .AddToScheme (crdScheme )
19
+ }
20
+
10
21
// mergePaths merges two string slices containing paths.
11
22
// This function makes no guarantees about order of the merged slice.
12
23
func mergePaths (s1 , s2 []string ) []string {
@@ -30,10 +41,10 @@ func mergePaths(s1, s2 []string) []string {
30
41
// This function makes no guarantees about order of the merged slice.
31
42
func mergeCRDs (s1 , s2 []runtime.Object ) []runtime.Object {
32
43
m := make (map [string ]* unstructured.Unstructured )
33
- for _ , obj := range runtimeListToUnstructured (s1 ) {
44
+ for _ , obj := range runtimeCRDListToUnstructured (s1 ) {
34
45
m [obj .GetName ()] = obj
35
46
}
36
- for _ , obj := range runtimeListToUnstructured (s2 ) {
47
+ for _ , obj := range runtimeCRDListToUnstructured (s2 ) {
37
48
m [obj .GetName ()] = obj
38
49
}
39
50
merged := make ([]runtime.Object , len (m ))
@@ -57,21 +68,19 @@ func existsUnstructured(s1, s2 []*unstructured.Unstructured) bool {
57
68
return false
58
69
}
59
70
60
- func runtimeListToUnstructured (l []runtime.Object ) []* unstructured.Unstructured {
71
+ func runtimeCRDListToUnstructured (l []runtime.Object ) []* unstructured.Unstructured {
61
72
res := []* unstructured.Unstructured {}
62
73
for _ , obj := range l {
63
- m , err := runtime . DefaultUnstructuredConverter . ToUnstructured ( obj . DeepCopyObject ())
64
- if err != nil {
74
+ u := & unstructured. Unstructured {}
75
+ if err := crdScheme . Convert ( obj , u , nil ); err != nil {
65
76
continue
66
77
}
67
- res = append (res , & unstructured.Unstructured {
68
- Object : m ,
69
- })
78
+ res = append (res , u )
70
79
}
71
80
return res
72
81
}
73
82
74
- func unstructuredListToRuntime (l []* unstructured.Unstructured ) []runtime.Object {
83
+ func unstructuredCRDListToRuntime (l []* unstructured.Unstructured ) []runtime.Object {
75
84
res := []runtime.Object {}
76
85
for _ , obj := range l {
77
86
res = append (res , obj .DeepCopy ())
0 commit comments