}
rest = rest[1:] // consume equals sign
rest = strings.TrimLeftFunc(rest, unicode.IsSpace)
- value, rest = consumeValue(rest)
- if value == "" {
+ value, rest2 := consumeValue(rest)
+ if value == "" && rest2 == rest {
return "", "", v
}
+ rest = rest2
return param, value, rest
}
{`form-data; firstname="Брэд"; lastname="Фицпатрик"`,
"form-data",
m("firstname", "Брэд", "lastname", "Фицпатрик")},
+
+ // Empty string used to be mishandled.
+ {`foo; bar=""`, "foo", m("bar", "")},
}
for _, test := range tests {
mt, params, err := ParseMediaType(test.in)
{"foo/BAR", map[string]string{"nonascii": "not an ascii character: ä"}, ""},
{"foo/bar", map[string]string{"a": "av", "b": "bv", "c": "cv"}, "foo/bar; a=av; b=bv; c=cv"},
{"foo/bar", map[string]string{"0": "'", "9": "'"}, "foo/bar; 0='; 9='"},
+ {"foo", map[string]string{"bar": ""}, `foo; bar=""`},
}
func TestFormatMediaType(t *testing.T) {