mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-20 01:01:22 +00:00
Replace os.Setenv with testing.T.Setenv in tests
T.Setenv ensures that the environment is returned to its prior state when the test ends. It also panics when called from a parallel test to prevent racy test interdependencies. Similarly, T.Cleanup ensures the environment is restored after a test or any of its parallel sub-tests call os.Unsetenv.
This commit is contained in:
parent
53cccbe4f9
commit
f3b9e0ddc9
@ -23,15 +23,15 @@ import (
|
|||||||
|
|
||||||
func setEnvVar(t *testing.T, env, val string, exists bool) {
|
func setEnvVar(t *testing.T, env, val string, exists bool) {
|
||||||
if exists {
|
if exists {
|
||||||
if err := os.Setenv(env, val); err != nil {
|
t.Setenv(env, val)
|
||||||
t.Errorf("could't set env %s: %v", env, err)
|
} else if prev, ok := os.LookupEnv(env); ok {
|
||||||
}
|
t.Cleanup(func() { os.Setenv(env, prev) })
|
||||||
return
|
|
||||||
}
|
|
||||||
if err := os.Unsetenv(env); err != nil {
|
if err := os.Unsetenv(env); err != nil {
|
||||||
t.Errorf("couldn't unset env %s: %v", env, err)
|
t.Errorf("couldn't unset env %s: %v", env, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestFallbackToEnv(t *testing.T) {
|
func TestFallbackToEnv(t *testing.T) {
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
@ -69,12 +69,6 @@ func TestFallbackToEnv(t *testing.T) {
|
|||||||
|
|
||||||
for _, test := range testCases {
|
for _, test := range testCases {
|
||||||
t.Run(test.desc, func(t *testing.T) {
|
t.Run(test.desc, func(t *testing.T) {
|
||||||
prevVal, prevOk := os.LookupEnv(test.env)
|
|
||||||
defer func() {
|
|
||||||
// preserve the original behavior
|
|
||||||
setEnvVar(t, test.env, prevVal, prevOk)
|
|
||||||
}()
|
|
||||||
|
|
||||||
setEnvVar(t, test.env, test.value, test.valueSet)
|
setEnvVar(t, test.env, test.value, test.valueSet)
|
||||||
value, err := fallbackToEnv("some-flag", test.env)
|
value, err := fallbackToEnv("some-flag", test.env)
|
||||||
if test.expectedError {
|
if test.expectedError {
|
||||||
@ -130,12 +124,6 @@ func TestFallbackToEnvWithDefault(t *testing.T) {
|
|||||||
|
|
||||||
for _, test := range testCases {
|
for _, test := range testCases {
|
||||||
t.Run(test.desc, func(t *testing.T) {
|
t.Run(test.desc, func(t *testing.T) {
|
||||||
prevVal, prevOk := os.LookupEnv(test.env)
|
|
||||||
defer func() {
|
|
||||||
// preserve the original behavior
|
|
||||||
setEnvVar(t, test.env, prevVal, prevOk)
|
|
||||||
}()
|
|
||||||
|
|
||||||
setEnvVar(t, test.env, test.value, test.valueSet)
|
setEnvVar(t, test.env, test.value, test.valueSet)
|
||||||
value := fallbackToEnvWithDefault("some-flag", test.env, test.defaultValue)
|
value := fallbackToEnvWithDefault("some-flag", test.env, test.defaultValue)
|
||||||
if value != test.expectedValue {
|
if value != test.expectedValue {
|
||||||
|
Loading…
Reference in New Issue
Block a user