@@ -14,7 +14,6 @@ import (
1414
1515 "github.com/google/go-cmp/cmp"
1616 "gotest.tools/v3/assert"
17- appsv1 "k8s.io/api/apps/v1"
1817 corev1 "k8s.io/api/core/v1"
1918 "k8s.io/apimachinery/pkg/api/equality"
2019 apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -144,41 +143,6 @@ func TestServerSideApply(t *testing.T) {
144143 )
145144 })
146145
147- t .Run ("StatefulSetStatus" , func (t * testing.T ) {
148- constructor := func (name string ) * appsv1.StatefulSet {
149- var sts appsv1.StatefulSet
150- sts .SetGroupVersionKind (appsv1 .SchemeGroupVersion .WithKind ("StatefulSet" ))
151- sts .Namespace , sts .Name = ns .Name , name
152- sts .Spec .Selector = & metav1.LabelSelector {
153- MatchLabels : map [string ]string {"select" : name },
154- }
155- sts .Spec .Template .Labels = map [string ]string {"select" : name }
156- sts .Spec .Template .Spec .Containers = []corev1.Container {{Name : "test" , Image : "test" }}
157- return & sts
158- }
159-
160- cc := client .WithFieldOwner (cc , t .Name ())
161- reconciler := Reconciler {Writer : cc }
162- upstream := constructor ("status-upstream" )
163-
164- // The structs defined in "k8s.io/api/apps/v1" marshal empty status fields.
165- switch {
166- case serverVersion .LessThan (version .MustParseGeneric ("1.22" )):
167- assert .ErrorContains (t ,
168- cc .Patch (ctx , upstream , client .Apply , client .ForceOwnership ),
169- "field not declared in schema" ,
170- "expected https://issue.k8s.io/109210" )
171-
172- default :
173- assert .NilError (t ,
174- cc .Patch (ctx , upstream , client .Apply , client .ForceOwnership ))
175- }
176-
177- // Our apply method generates the correct apply-patch.
178- again := constructor ("status-local" )
179- assert .NilError (t , reconciler .apply (ctx , again ))
180- })
181-
182146 t .Run ("ServiceSelector" , func (t * testing.T ) {
183147 constructor := func (name string ) * corev1.Service {
184148 var service corev1.Service
@@ -190,61 +154,6 @@ func TestServerSideApply(t *testing.T) {
190154 return & service
191155 }
192156
193- t .Run ("wrong-keys" , func (t * testing.T ) {
194- cc := client .WithFieldOwner (cc , t .Name ())
195- reconciler := Reconciler {Writer : cc }
196-
197- intent := constructor ("some-selector" )
198- intent .Spec .Selector = map [string ]string {"k1" : "v1" }
199-
200- // Create the Service.
201- before := intent .DeepCopy ()
202- assert .NilError (t ,
203- cc .Patch (ctx , before , client .Apply , client .ForceOwnership ))
204-
205- // Something external mucks it up.
206- assert .NilError (t ,
207- cc .Patch (ctx , before ,
208- client .RawPatch (client .Merge .Type (), []byte (`{"spec":{"selector":{"bad":"v2"}}}` )),
209- client .FieldOwner ("wrong" )))
210-
211- // client.Apply cannot correct it in old versions of Kubernetes.
212- after := intent .DeepCopy ()
213- assert .NilError (t ,
214- cc .Patch (ctx , after , client .Apply , client .ForceOwnership ))
215-
216- switch {
217- case serverVersion .LessThan (version .MustParseGeneric ("1.22" )):
218-
219- assert .Assert (t , len (after .Spec .Selector ) != len (intent .Spec .Selector ),
220- "expected https://issue.k8s.io/97970, got %v" , after .Spec .Selector )
221-
222- default :
223- assert .DeepEqual (t , after .Spec .Selector , intent .Spec .Selector )
224- }
225-
226- // Our apply method corrects it.
227- again := intent .DeepCopy ()
228- assert .NilError (t , reconciler .apply (ctx , again ))
229- assert .DeepEqual (t , again .Spec .Selector , intent .Spec .Selector )
230-
231- var count int
232- var managed * metav1.ManagedFieldsEntry
233- for i := range again .ManagedFields {
234- if again .ManagedFields [i ].Manager == t .Name () {
235- count ++
236- managed = & again .ManagedFields [i ]
237- }
238- }
239-
240- assert .Equal (t , count , 1 , "expected manager once in %v" , again .ManagedFields )
241- assert .Equal (t , managed .Operation , metav1 .ManagedFieldsOperationApply )
242-
243- assert .Assert (t , managed .FieldsV1 != nil )
244- assert .Assert (t , strings .Contains (string (managed .FieldsV1 .Raw ), `"f:selector":{` ),
245- "expected f:selector in %s" , managed .FieldsV1 .Raw )
246- })
247-
248157 for _ , tt := range []struct {
249158 name string
250159 selector map [string ]string
@@ -275,6 +184,9 @@ func TestServerSideApply(t *testing.T) {
275184 assert .NilError (t ,
276185 cc .Patch (ctx , after , client .Apply , client .ForceOwnership ))
277186
187+ // Perhaps one of:
188+ // - https://issue.k8s.io/117447
189+ // - https://github.com/kubernetes-sigs/structured-merge-diff/issues/259
278190 assert .Assert (t , len (after .Spec .Selector ) != len (intent .Spec .Selector ),
279191 "got %v" , after .Spec .Selector )
280192
0 commit comments