github.com/madlambda/nash@v0.2.2-0.20230113003044-f2284521680b/internal/sh/util_test.go (about)

     1  package sh
     2  
     3  import (
     4  	"sort"
     5  	"testing"
     6  
     7  	"github.com/madlambda/nash/sh"
     8  )
     9  
    10  func TestBuildEnv(t *testing.T) {
    11  	env := Env{
    12  		"teste": nil,
    13  	}
    14  
    15  	penv := buildenv(env)
    16  	if len(penv) != 0 {
    17  		t.Errorf("Invalid env length")
    18  		return
    19  	}
    20  
    21  	env = Env{
    22  		"PATH": sh.NewStrObj("/bin:/usr/bin"),
    23  	}
    24  
    25  	penv = buildenv(env)
    26  
    27  	if len(penv) != 1 {
    28  		t.Errorf("Invalid env length")
    29  		return
    30  	}
    31  
    32  	if penv[0] != "PATH=/bin:/usr/bin" {
    33  		t.Errorf("Invalid env value: %s", penv[0])
    34  		return
    35  	}
    36  
    37  	env = Env{
    38  		"PATH": sh.NewListObj([]sh.Obj{
    39  			sh.NewStrObj("/bin"),
    40  			sh.NewStrObj("/usr/bin"),
    41  		}),
    42  	}
    43  
    44  	penv = buildenv(env)
    45  
    46  	if len(penv) != 1 {
    47  		t.Errorf("Invalid env length")
    48  		return
    49  	}
    50  
    51  	if penv[0] != "PATH=(/bin /usr/bin)" {
    52  		t.Errorf("Invalid env value: %s", penv[0])
    53  		return
    54  	}
    55  
    56  	env = Env{
    57  		"PATH": sh.NewListObj([]sh.Obj{
    58  			sh.NewStrObj("/bin"),
    59  			sh.NewStrObj("/usr/bin"),
    60  		}),
    61  		"path": sh.NewStrObj("abracadabra"),
    62  	}
    63  
    64  	penv = buildenv(env)
    65  
    66  	if len(penv) != 2 {
    67  		t.Errorf("Invalid env length")
    68  		return
    69  	}
    70  
    71  	sort.Strings(penv)
    72  
    73  	if penv[0] != "PATH=(/bin /usr/bin)" {
    74  		t.Errorf("Invalid env value: '%s'", penv[0])
    75  		return
    76  	}
    77  
    78  	if penv[1] != "path=abracadabra" {
    79  		t.Errorf("Invalid env value: '%s'", penv[1])
    80  		return
    81  	}
    82  }