From 38d6ab5042b0c5a3d4dd4a158701d178d5eef64c Mon Sep 17 00:00:00 2001 From: Julian Wefers Date: Tue, 20 May 2025 11:28:14 +0200 Subject: [PATCH] fix: late init: don't omit non-empty pointers, even if a zero-value lies behind it Signed-off-by: Julian Wefers --- pkg/resource/lateinit.go | 2 -- pkg/resource/lateinit_test.go | 13 ++++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/pkg/resource/lateinit.go b/pkg/resource/lateinit.go index 1f9f4766..f3e4c2b1 100644 --- a/pkg/resource/lateinit.go +++ b/pkg/resource/lateinit.go @@ -134,8 +134,6 @@ func zeroValueJSONOmitEmptyFilter(cName string) ValueFilter { return true case (k == reflect.Slice || k == reflect.Map) && v.Len() == 0: return true - case k == reflect.Ptr && v.Elem().IsZero(): - return true default: return false } diff --git a/pkg/resource/lateinit_test.go b/pkg/resource/lateinit_test.go index f3c90004..311bee31 100644 --- a/pkg/resource/lateinit_test.go +++ b/pkg/resource/lateinit_test.go @@ -478,7 +478,7 @@ func TestLateInitialize(t *testing.T) { wantModified: false, wantCRObject: &nestedStruct4{}, }, - "TestSkipOmitemptyTaggedPtrElem": { + "TestIncludeZeroValuePtrElem": { args: args{ desiredObject: &nestedStruct4{}, observedObject: &nestedStruct4{ @@ -486,6 +486,17 @@ func TestLateInitialize(t *testing.T) { }, opts: []GenericLateInitializerOption{WithZeroValueJSONOmitEmptyFilter(CNameWildcard)}, }, + wantModified: true, + wantCRObject: &nestedStruct4{ + F1: &testStringEmpty, + }, + }, + "TestSkipNilPtrElem": { + args: args{ + desiredObject: &nestedStruct4{}, + observedObject: &nestedStruct4{}, + opts: []GenericLateInitializerOption{WithZeroValueJSONOmitEmptyFilter(CNameWildcard)}, + }, wantModified: false, wantCRObject: &nestedStruct4{}, },