mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-09 01:16:55 +00:00
120 lines
2.3 KiB
Go
120 lines
2.3 KiB
Go
|
package env
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
"runtime"
|
||
|
"sort"
|
||
|
"testing"
|
||
|
|
||
|
"gotest.tools/assert"
|
||
|
"gotest.tools/fs"
|
||
|
"gotest.tools/skip"
|
||
|
)
|
||
|
|
||
|
func TestPatchFromUnset(t *testing.T) {
|
||
|
key, value := "FOO_IS_UNSET", "VALUE"
|
||
|
revert := Patch(t, key, value)
|
||
|
|
||
|
assert.Assert(t, value == os.Getenv(key))
|
||
|
revert()
|
||
|
_, isSet := os.LookupEnv(key)
|
||
|
assert.Assert(t, !isSet)
|
||
|
}
|
||
|
|
||
|
func TestPatch(t *testing.T) {
|
||
|
skip.If(t, os.Getenv("PATH") == "")
|
||
|
oldVal := os.Getenv("PATH")
|
||
|
|
||
|
key, value := "PATH", "NEWVALUE"
|
||
|
revert := Patch(t, key, value)
|
||
|
|
||
|
assert.Assert(t, value == os.Getenv(key))
|
||
|
revert()
|
||
|
assert.Assert(t, oldVal == os.Getenv(key))
|
||
|
}
|
||
|
|
||
|
func TestPatchAll(t *testing.T) {
|
||
|
oldEnv := os.Environ()
|
||
|
newEnv := map[string]string{
|
||
|
"FIRST": "STARS",
|
||
|
"THEN": "MOON",
|
||
|
}
|
||
|
|
||
|
revert := PatchAll(t, newEnv)
|
||
|
|
||
|
actual := os.Environ()
|
||
|
sort.Strings(actual)
|
||
|
assert.DeepEqual(t, []string{"FIRST=STARS", "THEN=MOON"}, actual)
|
||
|
|
||
|
revert()
|
||
|
assert.DeepEqual(t, sorted(oldEnv), sorted(os.Environ()))
|
||
|
}
|
||
|
|
||
|
func TestPatchAllWindows(t *testing.T) {
|
||
|
skip.If(t, runtime.GOOS != "windows")
|
||
|
oldEnv := os.Environ()
|
||
|
newEnv := map[string]string{
|
||
|
"FIRST": "STARS",
|
||
|
"THEN": "MOON",
|
||
|
"=FINAL": "SUN",
|
||
|
"=BAR": "",
|
||
|
}
|
||
|
|
||
|
revert := PatchAll(t, newEnv)
|
||
|
|
||
|
actual := os.Environ()
|
||
|
sort.Strings(actual)
|
||
|
assert.DeepEqual(t, []string{"=BAR=", "=FINAL=SUN", "FIRST=STARS", "THEN=MOON"}, actual)
|
||
|
|
||
|
revert()
|
||
|
assert.DeepEqual(t, sorted(oldEnv), sorted(os.Environ()))
|
||
|
}
|
||
|
|
||
|
func sorted(source []string) []string {
|
||
|
sort.Strings(source)
|
||
|
return source
|
||
|
}
|
||
|
|
||
|
func TestToMap(t *testing.T) {
|
||
|
source := []string{
|
||
|
"key=value",
|
||
|
"novaluekey",
|
||
|
"=foo=bar",
|
||
|
"z=singlecharkey",
|
||
|
"b",
|
||
|
"",
|
||
|
}
|
||
|
actual := ToMap(source)
|
||
|
expected := map[string]string{
|
||
|
"key": "value",
|
||
|
"novaluekey": "",
|
||
|
"=foo": "bar",
|
||
|
"z": "singlecharkey",
|
||
|
"b": "",
|
||
|
"": "",
|
||
|
}
|
||
|
assert.DeepEqual(t, expected, actual)
|
||
|
}
|
||
|
|
||
|
func TestChangeWorkingDir(t *testing.T) {
|
||
|
tmpDir := fs.NewDir(t, t.Name())
|
||
|
defer tmpDir.Remove()
|
||
|
|
||
|
origWorkDir, err := os.Getwd()
|
||
|
assert.NilError(t, err)
|
||
|
|
||
|
reset := ChangeWorkingDir(t, tmpDir.Path())
|
||
|
t.Run("changed to dir", func(t *testing.T) {
|
||
|
wd, err := os.Getwd()
|
||
|
assert.NilError(t, err)
|
||
|
assert.Equal(t, wd, tmpDir.Path())
|
||
|
})
|
||
|
|
||
|
t.Run("reset dir", func(t *testing.T) {
|
||
|
reset()
|
||
|
wd, err := os.Getwd()
|
||
|
assert.NilError(t, err)
|
||
|
assert.Equal(t, wd, origWorkDir)
|
||
|
})
|
||
|
}
|