fix: values that look like flags would not be parsed correctly

Specifically, when parsing into slices or maps.

Fixes #290
This commit is contained in:
Alec Thomas
2022-04-08 06:41:09 +10:00
parent 556f8b773b
commit 7c6ff10d33
3 changed files with 31 additions and 9 deletions
+18
View File
@@ -495,3 +495,21 @@ func (t testMapperVarsContributor) Decode(ctx *kong.DecodeContext, target reflec
target.SetString("hi")
return nil
}
func TestValuesThatLookLikeFlags(t *testing.T) {
var cli struct {
Slice []string
Map map[string]string
}
k := mustNew(t, &cli)
_, err := k.Parse([]string{"--slice", "-foo"})
require.Error(t, err)
_, err = k.Parse([]string{"--map", "-foo=-bar"})
require.Error(t, err)
_, err = k.Parse([]string{"--slice=-foo", "--slice=-bar"})
require.NoError(t, err)
require.Equal(t, []string{"-foo", "-bar"}, cli.Slice)
_, err = k.Parse([]string{"--map=-foo=-bar"})
require.NoError(t, err)
require.Equal(t, map[string]string{"-foo": "-bar"}, cli.Map)
}