fix(maputil): prevent nil value overwrite (#1755)
Signed-off-by: zhengbayi <ban11111@qq.com> Co-authored-by: zhengbayi <zhengbaiyi@sensetime.com>
This commit is contained in:
		
							parent
							
								
									d1416ec7b4
								
							
						
					
					
						commit
						5837672bfa
					
				|  | @ -231,6 +231,9 @@ func MergeMaps(a, b map[string]interface{}) map[string]interface{} { | ||||||
| 		out[k] = v | 		out[k] = v | ||||||
| 	} | 	} | ||||||
| 	for k, v := range b { | 	for k, v := range b { | ||||||
|  | 		if v == nil { | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
| 		if v, ok := v.(map[string]interface{}); ok { | 		if v, ok := v.(map[string]interface{}); ok { | ||||||
| 			if bv, ok := out[k]; ok { | 			if bv, ok := out[k]; ok { | ||||||
| 				if bv, ok := bv.(map[string]interface{}); ok { | 				if bv, ok := bv.(map[string]interface{}); ok { | ||||||
|  |  | ||||||
|  | @ -215,6 +215,10 @@ func TestMapUtil_MergeMaps(t *testing.T) { | ||||||
| 			"app1": 3, | 			"app1": 3, | ||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
|  | 	map5 := map[string]interface{}{ | ||||||
|  | 		"logLevel":     "error", | ||||||
|  | 		"replicaCount": nil, | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	testMap := MergeMaps(map2, map4) | 	testMap := MergeMaps(map2, map4) | ||||||
| 	equal := reflect.DeepEqual(testMap, map4) | 	equal := reflect.DeepEqual(testMap, map4) | ||||||
|  | @ -247,4 +251,17 @@ func TestMapUtil_MergeMaps(t *testing.T) { | ||||||
| 	if !equal { | 	if !equal { | ||||||
| 		t.Errorf("Expected a map with different keys to merge properly with another map. Expected: %v, got %v", expectedMap, testMap) | 		t.Errorf("Expected a map with different keys to merge properly with another map. Expected: %v, got %v", expectedMap, testMap) | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	testMap = MergeMaps(map3, map5) | ||||||
|  | 	expectedMap = map[string]interface{}{ | ||||||
|  | 		"logLevel": "error", | ||||||
|  | 		"replicaCount": map[string]any{ | ||||||
|  | 			"app1":    3, | ||||||
|  | 			"awesome": 4, | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  | 	equal = reflect.DeepEqual(testMap, expectedMap) | ||||||
|  | 	if !equal { | ||||||
|  | 		t.Errorf("Expected a map with empty value not to overwrite another map's value. Expected: %v, got %v", expectedMap, testMap) | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue