Skip to content

Commit 96ff400

Browse files
authored
chore(clibase): add some more tests for parsing options from env (coder#6930)
1 parent ce51435 commit 96ff400

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

cli/clibase/option_test.go

+48
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,52 @@ func TestOptionSet_ParseEnv(t *testing.T) {
118118
require.NoError(t, err)
119119
require.EqualValues(t, "defname", workspaceName)
120120
})
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+
})
121169
}

0 commit comments

Comments
 (0)