add unittests for maps as environment variables with the separate flag

This commit is contained in:
Alex Flint 2021-04-19 13:33:31 -07:00
parent ccf882dca7
commit bb4e7fd4b0
1 changed files with 35 additions and 0 deletions

View File

@ -250,6 +250,30 @@ func TestMap(t *testing.T) {
assert.Equal(t, 3, args.Values["c"])
}
func TestMapPositional(t *testing.T) {
var args struct {
Values map[string]int `arg:"positional"`
}
err := parse("a=1 b=2 c=3", &args)
require.NoError(t, err)
assert.Len(t, args.Values, 3)
assert.Equal(t, 1, args.Values["a"])
assert.Equal(t, 2, args.Values["b"])
assert.Equal(t, 3, args.Values["c"])
}
func TestMapWithSeparate(t *testing.T) {
var args struct {
Values map[string]int `arg:"separate"`
}
err := parse("--values a=1 --values b=2 --values c=3", &args)
require.NoError(t, err)
assert.Len(t, args.Values, 3)
assert.Equal(t, 1, args.Values["a"])
assert.Equal(t, 2, args.Values["b"])
assert.Equal(t, 3, args.Values["c"])
}
func TestPlaceholder(t *testing.T) {
var args struct {
Input string `arg:"positional" placeholder:"SRC"`
@ -718,6 +742,17 @@ func TestEnvironmentVariableSliceArgumentWrongType(t *testing.T) {
assert.Error(t, err)
}
func TestEnvironmentVariableMap(t *testing.T) {
var args struct {
Foo map[int]string `arg:"env"`
}
setenv(t, "FOO", "1=one,99=ninetynine")
MustParse(&args)
assert.Len(t, args.Foo, 2)
assert.Equal(t, "one", args.Foo[1])
assert.Equal(t, "ninetynine", args.Foo[99])
}
func TestEnvironmentVariableIgnored(t *testing.T) {
var args struct {
Foo string `arg:"env"`