@@ -118,4 +118,52 @@ func TestOptionSet_ParseEnv(t *testing.T) {
118
118
require .NoError (t , err )
119
119
require .EqualValues (t , "defname" , workspaceName )
120
120
})
121
+
122
+ t .Run ("StringSlice" , func (t * testing.T ) {
123
+ t .Parallel ()
124
+
125
+ var actual clibase.StringArray
126
+ expected := []string {"foo" , "bar" , "baz" }
127
+
128
+ os := clibase.OptionSet {
129
+ clibase.Option {
130
+ Name : "name" ,
131
+ Value : & actual ,
132
+ Env : "NAMES" ,
133
+ },
134
+ }
135
+
136
+ err := os .SetDefaults ()
137
+ require .NoError (t , err )
138
+
139
+ err = os .ParseEnv ([]clibase.EnvVar {
140
+ {Name : "NAMES" , Value : "foo,bar,baz" },
141
+ })
142
+ require .NoError (t , err )
143
+ require .EqualValues (t , expected , actual )
144
+ })
145
+
146
+ t .Run ("StructMapStringString" , func (t * testing.T ) {
147
+ t .Parallel ()
148
+
149
+ var actual clibase.Struct [map [string ]string ]
150
+ expected := map [string ]string {"foo" : "bar" , "baz" : "zap" }
151
+
152
+ os := clibase.OptionSet {
153
+ clibase.Option {
154
+ Name : "labels" ,
155
+ Value : & actual ,
156
+ Env : "LABELS" ,
157
+ },
158
+ }
159
+
160
+ err := os .SetDefaults ()
161
+ require .NoError (t , err )
162
+
163
+ err = os .ParseEnv ([]clibase.EnvVar {
164
+ {Name : "LABELS" , Value : `{"foo":"bar","baz":"zap"}` },
165
+ })
166
+ require .NoError (t , err )
167
+ require .EqualValues (t , expected , actual .Value )
168
+ })
121
169
}
0 commit comments