From 7663e0f20a2ffb6a34ff622dae7e77167d263ebd Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Fri, 31 Mar 2023 16:55:40 +0100 Subject: [PATCH] chore(clibase): add some more tests for parsing options from env --- cli/clibase/option_test.go | 48 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/cli/clibase/option_test.go b/cli/clibase/option_test.go index d9d38cc6c7bd9..cacd8d3a10793 100644 --- a/cli/clibase/option_test.go +++ b/cli/clibase/option_test.go @@ -118,4 +118,52 @@ func TestOptionSet_ParseEnv(t *testing.T) { require.NoError(t, err) require.EqualValues(t, "defname", workspaceName) }) + + t.Run("StringSlice", func(t *testing.T) { + t.Parallel() + + var actual clibase.StringArray + expected := []string{"foo", "bar", "baz"} + + os := clibase.OptionSet{ + clibase.Option{ + Name: "name", + Value: &actual, + Env: "NAMES", + }, + } + + err := os.SetDefaults() + require.NoError(t, err) + + err = os.ParseEnv([]clibase.EnvVar{ + {Name: "NAMES", Value: "foo,bar,baz"}, + }) + require.NoError(t, err) + require.EqualValues(t, expected, actual) + }) + + t.Run("StructMapStringString", func(t *testing.T) { + t.Parallel() + + var actual clibase.Struct[map[string]string] + expected := map[string]string{"foo": "bar", "baz": "zap"} + + os := clibase.OptionSet{ + clibase.Option{ + Name: "labels", + Value: &actual, + Env: "LABELS", + }, + } + + err := os.SetDefaults() + require.NoError(t, err) + + err = os.ParseEnv([]clibase.EnvVar{ + {Name: "LABELS", Value: `{"foo":"bar","baz":"zap"}`}, + }) + require.NoError(t, err) + require.EqualValues(t, expected, actual.Value) + }) }