github.com/docker/app@v0.9.1-beta3.0.20210611140623-a48f773ab002/types/parameters/merge_test.go (about) 1 package parameters 2 3 import ( 4 "testing" 5 6 "gotest.tools/assert" 7 is "gotest.tools/assert/cmp" 8 ) 9 10 func TestMergeSliceError(t *testing.T) { 11 m1 := map[string]interface{}{ 12 "baz": []string{"a", "b"}, 13 } 14 m2 := map[string]interface{}{ 15 "baz": []int{1}, 16 } 17 _, err := Merge(m1, m2) 18 assert.Check(t, is.ErrorContains(err, "cannot override two slices with different type")) 19 } 20 21 func TestMerge(t *testing.T) { 22 m1 := map[string]interface{}{ 23 "foo": "bar", 24 "bar": map[string]interface{}{ 25 "baz": "banana", 26 "port": "80", 27 }, 28 "baz": []string{"a", "b"}, 29 } 30 m2 := map[string]interface{}{ 31 "bar": map[string]interface{}{ 32 "baz": "biz", 33 "port": "10", 34 "foo": "toto", 35 }, 36 "baz": []string{"c"}, 37 "banana": "monkey", 38 } 39 m3, err := FromFlatten(map[string]string{ 40 "bar.baz": "boz", 41 }) 42 assert.NilError(t, err) 43 parameters, err := Merge(m1, m2, m3) 44 assert.NilError(t, err) 45 assert.Check(t, is.DeepEqual(parameters.Flatten(), map[string]string{ 46 "foo": "bar", 47 "bar.baz": "boz", 48 "bar.port": "10", 49 "bar.foo": "toto", 50 "baz.0": "c", 51 "banana": "monkey", 52 })) 53 }