Skip to content

Commit

Permalink
🐛 Fakeclient: Do not consider an apply patch to be a strategic merge …
Browse files Browse the repository at this point in the history
…patch

The fakeclient currently considers an apply patch to be a strategic
merge patch. This is completely wrong, those are different things and
apply patches are not supported in the fakeclientl, because in order to
support them it would need the entire SSA logic which isn't implemented
in upstream yet.
  • Loading branch information
alvaroaleman committed Feb 9, 2024
1 parent 7032a3c commit ed06e7e
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
4 changes: 2 additions & 2 deletions pkg/client/fake/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -947,7 +947,7 @@ func dryPatch(action testing.PatchActionImpl, tracker testing.ObjectTracker) (ru
if err := json.Unmarshal(modified, obj); err != nil {
return nil, err
}
case types.StrategicMergePatchType, types.ApplyPatchType:
case types.StrategicMergePatchType:
mergedByte, err := strategicpatch.StrategicMergePatch(old, action.GetPatch(), obj)
if err != nil {
return nil, err
Expand All @@ -956,7 +956,7 @@ func dryPatch(action testing.PatchActionImpl, tracker testing.ObjectTracker) (ru
return nil, err
}
default:
return nil, fmt.Errorf("PatchType is not supported")
return nil, fmt.Errorf("%s PatchType is not supported", action.GetPatchType())
}
return obj, nil
}
Expand Down
20 changes: 20 additions & 0 deletions pkg/client/fake/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,26 @@ var _ = Describe("Fake client", func() {
Expect(list.Items).To(ConsistOf(*dep2))
})

It("should reject apply patches, they are not supported in the fake client", func() {
By("Creating a new configmap")
cm := &corev1.ConfigMap{
TypeMeta: metav1.TypeMeta{
APIVersion: "v1",
Kind: "ConfigMap",
},
ObjectMeta: metav1.ObjectMeta{
Name: "new-test-cm",
Namespace: "ns2",
},
}
err := cl.Create(context.Background(), cm)
Expect(err).ToNot(HaveOccurred())

cm.Data = map[string]string{"foo": "bar"}
err = cl.Patch(context.Background(), cm, client.Apply, client.ForceOwnership)
Expect(err).To(MatchError("application/apply-patch+yaml PatchType is not supported"))
})

It("should be able to Create", func() {
By("Creating a new configmap")
newcm := &corev1.ConfigMap{
Expand Down

0 comments on commit ed06e7e

Please sign in to comment.