fix(pkg/strvals): evaluate "null" values

resolves #3891
Co-authored-by: Matthew Fisher <matt.fisher@microsoft.com>
pull/3912/head
Michelle Noorali 7 years ago
parent 870827c13b
commit 1850aeade9

@ -82,6 +82,10 @@ func ParseIntoString(s string, dest map[string]interface{}) error {
// parser is a simple parser that takes a strvals line and parses it into a // parser is a simple parser that takes a strvals line and parses it into a
// map representation. // map representation.
//
// where sc is the source of the original data being parsed
// where data is the final parsed data from the parses with correct types
// where st is a boolean to figure out if we're forcing it to parse values as string
type parser struct { type parser struct {
sc *bytes.Buffer sc *bytes.Buffer
data map[string]interface{} data map[string]interface{}
@ -329,6 +333,10 @@ func typedVal(v []rune, st bool) interface{} {
return false return false
} }
if strings.EqualFold(val, "null") {
return nil
}
// If this value does not start with zero, and not returnString, try parsing it to an int // If this value does not start with zero, and not returnString, try parsing it to an int
if !st && len(val) != 0 && val[0] != '0' { if !st && len(val) != 0 && val[0] != '0' {
if iv, err := strconv.ParseInt(val, 10, 64); err == nil { if iv, err := strconv.ParseInt(val, 10, 64); err == nil {

@ -81,6 +81,11 @@ func TestParseSet(t *testing.T) {
expect map[string]interface{} expect map[string]interface{}
err bool err bool
}{ }{
{
"name1=null,f=false,t=true",
map[string]interface{}{"name1": nil, "f": false, "t": true},
false,
},
{ {
"name1=value1", "name1=value1",
map[string]interface{}{"name1": "value1"}, map[string]interface{}{"name1": "value1"},

Loading…
Cancel
Save