diff --git a/merge/nested_test.go b/merge/nested_test.go index 367adca2..7adb78e9 100644 --- a/merge/nested_test.go +++ b/merge/nested_test.go @@ -44,6 +44,15 @@ var nestedTypeParser = func() Parser { - name: mapOfMapsRecursive type: namedType: mapOfMapsRecursive + - name: recursiveStruct + type: + namedType: recursiveStruct +- name: recursiveStruct + map: + fields: + - name: name + type: + scalar: string - name: listOfLists list: elementType: @@ -500,6 +509,55 @@ func TestUpdateNestedType(t *testing.T) { ), }, }, + "recursiveStruct_remove_nested_dangling": { + Ops: []Operation{ + Apply{ + Manager: "default", + Object: ` + recursiveStruct: + name: a + `, + APIVersion: "v1", + }, + Apply{ + Manager: "default", + Object: ` + `, + APIVersion: "v1", + }, + }, + // TODO: This is wrong, we're expecting an empty object. + Object: ` + recursiveStruct: null + `, + APIVersion: "v1", + Managed: fieldpath.ManagedFields{}, + }, + "recursiveStruct_remove_dangling": { + Ops: []Operation{ + Apply{ + Manager: "default", + Object: ` + recursiveStruct: + name: a + `, + APIVersion: "v1", + }, + Apply{ + Manager: "default", + Object: ` + recursiveStruct: + `, + APIVersion: "v1", + }, + }, + // If person applies the empty struct, we should keep it. + Object: ` + recursiveStruct: + `, + APIVersion: "v1", + Managed: fieldpath.ManagedFields{}, + }, } for name, test := range tests {