github.com/tinygo-org/tinygo@v0.31.3-0.20240404173401-90b0bf646c27/src/os/env_unix_test.go (about)

     1  // Copyright 2013 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  //go:build darwin || linux || wasip1
     6  
     7  package os_test
     8  
     9  import (
    10  	"fmt"
    11  	. "os"
    12  	"testing"
    13  )
    14  
    15  var setenvEinvalTests = []struct {
    16  	k, v string
    17  }{
    18  	{"", ""},      // empty key
    19  	{"k=v", ""},   // '=' in key
    20  	{"\x00", ""},  // '\x00' in key
    21  	{"k", "\x00"}, // '\x00' in value
    22  }
    23  
    24  func TestSetenvUnixEinval(t *testing.T) {
    25  	for _, tt := range setenvEinvalTests {
    26  		err := Setenv(tt.k, tt.v)
    27  		if err == nil {
    28  			t.Errorf(`Setenv(%q, %q) == nil, want error`, tt.k, tt.v)
    29  		}
    30  	}
    31  }
    32  
    33  var shellSpecialVarTests = []struct {
    34  	k, v string
    35  }{
    36  	{"*", "asterisk"},
    37  	{"#", "pound"},
    38  	{"$", "dollar"},
    39  	{"@", "at"},
    40  	{"!", "exclamation mark"},
    41  	{"?", "question mark"},
    42  	{"-", "dash"},
    43  }
    44  
    45  func TestExpandEnvShellSpecialVar(t *testing.T) {
    46  	for _, tt := range shellSpecialVarTests {
    47  		Setenv(tt.k, tt.v)
    48  		defer Unsetenv(tt.k)
    49  
    50  		argRaw := fmt.Sprintf("$%s", tt.k)
    51  		argWithBrace := fmt.Sprintf("${%s}", tt.k)
    52  		if gotRaw, gotBrace := ExpandEnv(argRaw), ExpandEnv(argWithBrace); gotRaw != gotBrace {
    53  			t.Errorf("ExpandEnv(%q) = %q, ExpandEnv(%q) = %q; expect them to be equal", argRaw, gotRaw, argWithBrace, gotBrace)
    54  		}
    55  	}
    56  }