summaryrefslogtreecommitdiff
path: root/parse_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'parse_test.go')
-rw-r--r--parse_test.go54
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
}