mirror of
https://github.com/jimeh/envctl.git
synced 2026-02-19 12:06:40 +00:00
feat(climatecontrol): initial working version
This commit is contained in:
178
climatecontrol_test.go
Normal file
178
climatecontrol_test.go
Normal file
@@ -0,0 +1,178 @@
|
||||
package climatecontrol
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestWithEnv(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
env map[string]string
|
||||
}{
|
||||
{
|
||||
name: "empty",
|
||||
env: map[string]string{},
|
||||
},
|
||||
{
|
||||
name: "new vars",
|
||||
env: map[string]string{
|
||||
"CC_TEST_INSIDE": "new var is here",
|
||||
"CC_TEST_FOO": "bar",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "set existing",
|
||||
env: map[string]string{
|
||||
"CC_TEST_INSIDE": "new var is here",
|
||||
"CC_TEST_OUTSIDE": "this is not the same",
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
os.Setenv("CC_TEST_OUTSIDE", t.Name())
|
||||
outside := parseEnviron(os.Environ())
|
||||
|
||||
WithEnv(tt.env, func() {
|
||||
os.Setenv("CC_TEST_SET_INSIDE", t.Name()+"-manual")
|
||||
|
||||
for k, v := range tt.env {
|
||||
got := os.Getenv(k)
|
||||
assert.Equal(t, v, got)
|
||||
}
|
||||
|
||||
for k, v := range outside {
|
||||
if _, ok := tt.env[k]; !ok {
|
||||
assert.Equal(t, v, os.Getenv(k))
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
_, exists := os.LookupEnv("CC_TEST_SET_INSIDE")
|
||||
assert.Equal(t, false, exists)
|
||||
|
||||
for k := range tt.env {
|
||||
if _, ok := outside[k]; !ok {
|
||||
_, exists := os.LookupEnv(k)
|
||||
assert.Equal(t, false, exists)
|
||||
}
|
||||
}
|
||||
|
||||
for k, v := range outside {
|
||||
assert.Equal(t, v, os.Getenv(k))
|
||||
}
|
||||
|
||||
os.Unsetenv("CC_TEST_OUTSIDE")
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestWithCleanEnv(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
env map[string]string
|
||||
}{
|
||||
{
|
||||
name: "empty",
|
||||
env: map[string]string{},
|
||||
},
|
||||
{
|
||||
name: "new vars",
|
||||
env: map[string]string{
|
||||
"CC_TEST_INSIDE": "new var is here",
|
||||
"CC_TEST_FOO": "bar",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "set existing",
|
||||
env: map[string]string{
|
||||
"CC_TEST_INSIDE": "new var is here",
|
||||
"CC_TEST_OUTSIDE": "is is not the same",
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
os.Setenv("CC_TEST_OUTSIDE", t.Name())
|
||||
outside := parseEnviron(os.Environ())
|
||||
|
||||
WithCleanEnv(tt.env, func() {
|
||||
os.Setenv("CC_TEST_SET_INSIDE", t.Name()+"-manual")
|
||||
|
||||
for k, v := range tt.env {
|
||||
got := os.Getenv(k)
|
||||
assert.Equal(t, v, got)
|
||||
}
|
||||
|
||||
for k := range outside {
|
||||
if _, ok := tt.env[k]; !ok {
|
||||
_, exists := os.LookupEnv(k)
|
||||
assert.Equal(t, false, exists)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
_, exists := os.LookupEnv("CC_TEST_SET_INSIDE")
|
||||
assert.Equal(t, false, exists)
|
||||
|
||||
for k := range tt.env {
|
||||
if _, ok := outside[k]; !ok {
|
||||
_, exists := os.LookupEnv(k)
|
||||
assert.Equal(t, false, exists)
|
||||
}
|
||||
}
|
||||
|
||||
for k, v := range outside {
|
||||
assert.Equal(t, v, os.Getenv(k))
|
||||
}
|
||||
|
||||
os.Unsetenv("CC_TEST_OUTSIDE")
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_parseEnviron(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
vars []string
|
||||
want map[string]string
|
||||
}{
|
||||
{
|
||||
name: "empty",
|
||||
vars: []string{},
|
||||
want: map[string]string{},
|
||||
},
|
||||
{
|
||||
name: "various",
|
||||
vars: []string{
|
||||
"USER=john",
|
||||
"NAME=John Doe",
|
||||
"SHELL=/bin/bash",
|
||||
"GOPRIVATE=",
|
||||
"X=11",
|
||||
"TAGS=foo=bar,hello=world",
|
||||
"_=go",
|
||||
"INVALID-var",
|
||||
},
|
||||
want: map[string]string{
|
||||
"USER": "john",
|
||||
"NAME": "John Doe",
|
||||
"SHELL": "/bin/bash",
|
||||
"GOPRIVATE": "",
|
||||
"X": "11",
|
||||
"TAGS": "foo=bar,hello=world",
|
||||
"_": "go",
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := parseEnviron(tt.vars)
|
||||
|
||||
assert.Equal(t, tt.want, got)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user