diff options
| author | Alex Flint <[email protected]> | 2018-05-16 11:24:05 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2018-05-16 11:24:05 -0700 |
| commit | f7c0423bd11ee80ab81d25c6d46f492998af8547 (patch) | |
| tree | 6789cd15a70b0976fa7ce821903d2747239e82ef /parse_test.go | |
| parent | 074ee5f759999d103724b5594e33901adeb28e73 (diff) | |
| parent | 89714b6f48fc2660e3fa633ebb7b86c07ce0da01 (diff) | |
Merge pull request #65 from illia-v/env_multiple_values
Fix providing multiple values via environment variables
Diffstat (limited to 'parse_test.go')
| -rw-r--r-- | parse_test.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/parse_test.go b/parse_test.go index 1461c02..0bc97e3 100644 --- a/parse_test.go +++ b/parse_test.go @@ -580,6 +580,60 @@ func TestEnvironmentVariableRequired(t *testing.T) { assert.Equal(t, "bar", args.Foo) } +func TestEnvironmentVariableSliceArgumentString(t *testing.T) { + var args struct { + Foo []string `arg:"env"` + } + setenv(t, "FOO", "bar,\"baz, qux\"") + MustParse(&args) + assert.Equal(t, []string{"bar", "baz, qux"}, args.Foo) +} + +func TestEnvironmentVariableSliceArgumentInteger(t *testing.T) { + var args struct { + Foo []int `arg:"env"` + } + setenv(t, "FOO", "1,99") + MustParse(&args) + assert.Equal(t, []int{1, 99}, args.Foo) +} + +func TestEnvironmentVariableSliceArgumentFloat(t *testing.T) { + var args struct { + Foo []float32 `arg:"env"` + } + setenv(t, "FOO", "1.1,99.9") + MustParse(&args) + assert.Equal(t, []float32{1.1, 99.9}, args.Foo) +} + +func TestEnvironmentVariableSliceArgumentBool(t *testing.T) { + var args struct { + Foo []bool `arg:"env"` + } + setenv(t, "FOO", "true,false,0,1") + MustParse(&args) + assert.Equal(t, []bool{true, false, false, true}, args.Foo) +} + +func TestEnvironmentVariableSliceArgumentWrongCsv(t *testing.T) { + var args struct { + Foo []int `arg:"env"` + } + setenv(t, "FOO", "1,99\"") + err := Parse(&args) + assert.Error(t, err) +} + +func TestEnvironmentVariableSliceArgumentWrongType(t *testing.T) { + var args struct { + Foo []bool `arg:"env"` + } + setenv(t, "FOO", "one,two") + err := Parse(&args) + assert.Error(t, err) +} + type textUnmarshaler struct { val int } |
