pull/32714/merge
Federico Laurianti 10 hours ago committed by GitHub
commit 4e0add960f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -485,6 +485,10 @@ func (t *parser) valList() ([]any, error) {
if r, _, e := t.sc.ReadRune(); e == nil && r != ',' {
t.sc.UnreadRune()
}
// {} is an empty list.
if len(list) == 0 && len(rs) == 0 {
return list, nil
}
v, e := t.reader(rs)
list = append(list, v)
return list, e

@ -131,6 +131,11 @@ func TestParseSet(t *testing.T) {
expect: map[string]any{"zero": "0"},
err: false,
},
{
str: "empty_list={}",
expect: map[string]any{"empty_list": []any{}},
err: false,
},
}
tests := []struct {
str string
@ -287,6 +292,26 @@ func TestParseSet(t *testing.T) {
map[string]any{"name1": map[string]any{"name2": []string{"value1", "value2"}}},
false,
},
{
str: "name1={value1}",
expect: map[string]any{"name1": []string{"value1"}},
},
{
str: "name1={value1,}",
expect: map[string]any{"name1": []string{"value1", ""}},
},
{
str: "name1={}",
expect: map[string]any{"name1": []any{}},
},
{
str: "name1={},name2=value2",
expect: map[string]any{"name1": []any{}, "name2": "value2"},
},
{
str: "name1.name2={}",
expect: map[string]any{"name1": map[string]any{"name2": []any{}}},
},
{
str: "name1={1021,902",
err: true,
@ -344,6 +369,10 @@ func TestParseSet(t *testing.T) {
str: "noval[0]=",
expect: map[string]any{"noval": []any{""}},
},
{
str: "list[0]={}",
expect: map[string]any{"list": []any{[]any{}}},
},
{
str: "nested[0][0]=1",
expect: map[string]any{"nested": []any{[]any{1}}},
@ -667,6 +696,17 @@ func TestParseFile(t *testing.T) {
assert.YAMLEq(t, string(y1), string(y2), input)
}
func TestParseFileEmptyList(t *testing.T) {
input := "name1={}"
rs2v := func(rs []rune) (any, error) {
return nil, fmt.Errorf("unexpected read of %q", string(rs))
}
got, err := ParseFile(input, rs2v)
require.NoError(t, err)
assert.Equal(t, map[string]any{"name1": []any{}}, got, input)
}
func TestParseIntoFile(t *testing.T) {
got := map[string]any{}
input := "name1=path1"

Loading…
Cancel
Save