diff --git a/envutil/envutil_test.go b/envutil/envutil_test.go index bbe91f06c..014e1b486 100644 --- a/envutil/envutil_test.go +++ b/envutil/envutil_test.go @@ -3,6 +3,7 @@ package envutil import ( "testing" + "github.com/gookit/goutil/maputil" "github.com/gookit/goutil/testutil" "github.com/gookit/goutil/testutil/assert" ) @@ -63,3 +64,36 @@ func TestParseEnvValue(t *testing.T) { is.Eq("abc/def_val", ParseEnvValue(rVal)) }) } + +func TestSetEnvs(t *testing.T) { + envMp := map[string]string{ + "FirstEnv": "abc", + "SecondEnv": "def", + } + keys := maputil.Keys(envMp) + for key := range envMp { + assert.Empty(t, Getenv(key)) + } + + // SetEnvs + SetEnvs(maputil.SMap(envMp).ToKVPairs()...) + for key, val := range envMp { + assert.Eq(t, val, Getenv(key)) + } + + UnsetEnvs(keys...) + for key := range envMp { + assert.Empty(t, Getenv(key)) + } + + // SetEnvMap + SetEnvMap(envMp) + for key, val := range envMp { + assert.Eq(t, val, Getenv(key)) + } + + UnsetEnvs(keys...) + for key := range envMp { + assert.Empty(t, Getenv(key)) + } +} diff --git a/maputil/smap.go b/maputil/smap.go index d38598214..47c9ad991 100644 --- a/maputil/smap.go +++ b/maputil/smap.go @@ -111,6 +111,15 @@ func (m SMap) Values() []string { return ss } +// ToKVPairs slice convert. eg: {k1:v1,k2:v2} => {k1,v1,k2,v2} +func (m SMap) ToKVPairs() []string { + pairs := make([]string, 0, len(m)*2) + for k, v := range m { + pairs = append(pairs, k, v) + } + return pairs +} + // String data to string func (m SMap) String() string { return ToString2(m) diff --git a/maputil/smap_test.go b/maputil/smap_test.go index ac7761813..bc6b3c4fb 100644 --- a/maputil/smap_test.go +++ b/maputil/smap_test.go @@ -1,6 +1,7 @@ package maputil_test import ( + "fmt" "testing" "github.com/gookit/goutil/maputil" @@ -47,3 +48,15 @@ func TestSMap_usage(t *testing.T) { assert.Eq(t, "", mp.Str("notExists")) assert.Empty(t, mp.Ints("notExists")) } + +func TestSMap_ToKVPairs(t *testing.T) { + mp := maputil.SMap{ + "k1": "23", + "k2": "ab", + } + arr := mp.ToKVPairs() + assert.Len(t, arr, 4) + str := fmt.Sprint(arr) + assert.StrContains(t, str, "k1 23") + assert.StrContains(t, str, "k2 ab") +} diff --git a/sysutil/sysenv_test.go b/sysutil/sysenv_test.go index 35c25beaf..10738e2d9 100644 --- a/sysutil/sysenv_test.go +++ b/sysutil/sysenv_test.go @@ -13,12 +13,13 @@ import ( func TestSysenv_common(t *testing.T) { ss := sysutil.EnvPaths() assert.NotEmpty(t, ss) - assert.NotEmpty(t, sysutil.Environ()) ss = sysutil.SearchPath("go", 3) assert.NotEmpty(t, ss) // dump.P(ss) + ss = sysutil.SearchPath("o", 3) + assert.NotEmpty(t, ss) } func TestCurrentShell(t *testing.T) {