mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 22:17:14 +00:00
fix bug of swallowing missing merge key error
This commit is contained in:
parent
e991a94d2d
commit
51f033a4f1
@ -1322,23 +1322,23 @@ func mergeMap(original, patch map[string]interface{}, schema LookupPatchMeta, me
|
|||||||
// If they're both maps or lists, recurse into the value.
|
// If they're both maps or lists, recurse into the value.
|
||||||
switch originalType.Kind() {
|
switch originalType.Kind() {
|
||||||
case reflect.Map:
|
case reflect.Map:
|
||||||
subschema, patchMeta, err := schema.LookupPatchMetadataForStruct(k)
|
subschema, patchMeta, err2 := schema.LookupPatchMetadataForStruct(k)
|
||||||
if err != nil {
|
if err2 != nil {
|
||||||
return nil, err
|
return nil, err2
|
||||||
}
|
}
|
||||||
_, patchStrategy, err := extractRetainKeysPatchStrategy(patchMeta.GetPatchStrategies())
|
_, patchStrategy, err2 := extractRetainKeysPatchStrategy(patchMeta.GetPatchStrategies())
|
||||||
if err != nil {
|
if err2 != nil {
|
||||||
return nil, err
|
return nil, err2
|
||||||
}
|
}
|
||||||
original[k], err = mergeMapHandler(original[k], patchV, subschema, patchStrategy, mergeOptions)
|
original[k], err = mergeMapHandler(original[k], patchV, subschema, patchStrategy, mergeOptions)
|
||||||
case reflect.Slice:
|
case reflect.Slice:
|
||||||
subschema, patchMeta, err := schema.LookupPatchMetadataForSlice(k)
|
subschema, patchMeta, err2 := schema.LookupPatchMetadataForSlice(k)
|
||||||
if err != nil {
|
if err2 != nil {
|
||||||
return nil, err
|
return nil, err2
|
||||||
}
|
}
|
||||||
_, patchStrategy, err := extractRetainKeysPatchStrategy(patchMeta.GetPatchStrategies())
|
_, patchStrategy, err2 := extractRetainKeysPatchStrategy(patchMeta.GetPatchStrategies())
|
||||||
if err != nil {
|
if err2 != nil {
|
||||||
return nil, err
|
return nil, err2
|
||||||
}
|
}
|
||||||
original[k], err = mergeSliceHandler(original[k], patchV, subschema, patchStrategy, patchMeta.GetPatchMergeKey(), isDeleteList, mergeOptions)
|
original[k], err = mergeSliceHandler(original[k], patchV, subschema, patchStrategy, patchMeta.GetPatchMergeKey(), isDeleteList, mergeOptions)
|
||||||
default:
|
default:
|
||||||
|
@ -654,6 +654,21 @@ mergingIntList:
|
|||||||
ExpectedError: "doesn't match",
|
ExpectedError: "doesn't match",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Description: "missing merge key should error out",
|
||||||
|
StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{
|
||||||
|
Original: []byte(`
|
||||||
|
mergingList:
|
||||||
|
- name: 1
|
||||||
|
value: a
|
||||||
|
`),
|
||||||
|
TwoWay: []byte(`
|
||||||
|
mergingList:
|
||||||
|
- value: b
|
||||||
|
`),
|
||||||
|
ExpectedError: "does not contain declared merge key",
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCustomStrategicMergePatch(t *testing.T) {
|
func TestCustomStrategicMergePatch(t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user