src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/eval/vars/env_test.go (about) 1 package vars 2 3 import ( 4 "os" 5 "testing" 6 7 "src.elv.sh/pkg/testutil" 8 ) 9 10 func TestEnvVariable(t *testing.T) { 11 name := "elvish_test" 12 testutil.Unsetenv(t, name) 13 14 v := FromEnv(name).(envVariable) 15 16 if set := v.IsSet(); set != false { 17 t.Errorf("EnvVariable.Set returns true for unset env variable") 18 } 19 20 err := v.Set("foo") 21 if err != nil || os.Getenv(name) != "foo" { 22 t.Errorf("EnvVariable.Set doesn't alter env value") 23 } 24 25 if set := v.IsSet(); set != true { 26 t.Errorf("EnvVariable.Set returns false for set env variable") 27 } 28 29 err = v.Set(true) 30 if err != errEnvMustBeString { 31 t.Errorf("envVariable.Set to a non-string value didn't return an error") 32 } 33 34 os.Setenv(name, "bar") 35 if v.Get() != "bar" { 36 t.Errorf("EnvVariable.Get doesn't return value set elsewhere") 37 } 38 }