Skip to content

Commit f1b6e4e

Browse files
committed
Allow integers in map values, except in 'labels' key
Signed-off-by: Josh Curl <[email protected]>
1 parent 8792767 commit f1b6e4e

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

Diff for: yaml/types_yaml.go

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"reflect"
66
"sort"
7+
"strconv"
78
"strings"
89

910
"github.com/docker/engine-api/types/strslice"
@@ -259,6 +260,8 @@ func toSepMapParts(value map[interface{}]interface{}, sep string) ([]string, err
259260
if sk, ok := k.(string); ok {
260261
if sv, ok := v.(string); ok {
261262
parts = append(parts, sk+sep+sv)
263+
} else if sv, ok := v.(int64); ok {
264+
parts = append(parts, sk+sep+strconv.FormatInt(sv, 10))
262265
} else {
263266
return nil, fmt.Errorf("Cannot unmarshal '%v' of type %T into a string value", v, v)
264267
}

Diff for: yaml/types_yaml_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -99,14 +99,14 @@ func contains(list []string, item string) bool {
9999
}
100100

101101
func TestMaporsliceYaml(t *testing.T) {
102-
str := `{foo: {bar: baz, far: faz}}`
102+
str := `{foo: {bar: baz, far: 1}}`
103103

104104
s := StructMaporslice{}
105105
yaml.Unmarshal([]byte(str), &s)
106106

107107
assert.Equal(t, 2, len(s.Foo))
108108
assert.True(t, contains(s.Foo, "bar=baz"))
109-
assert.True(t, contains(s.Foo, "far=faz"))
109+
assert.True(t, contains(s.Foo, "far=1"))
110110

111111
d, err := yaml.Marshal(&s)
112112
assert.Nil(t, err)
@@ -116,7 +116,7 @@ func TestMaporsliceYaml(t *testing.T) {
116116

117117
assert.Equal(t, 2, len(s2.Foo))
118118
assert.True(t, contains(s2.Foo, "bar=baz"))
119-
assert.True(t, contains(s2.Foo, "far=faz"))
119+
assert.True(t, contains(s2.Foo, "far=1"))
120120
}
121121

122122
var sampleStructCommand = `command: bash`

0 commit comments

Comments
 (0)