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  }