github.com/code-reading/golang@v0.0.0-20220303082512-ba5bc0e589a3/go/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 aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris 6 // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris 7 8 package os_test 9 10 import ( 11 "fmt" 12 . "os" 13 "testing" 14 ) 15 16 var setenvEinvalTests = []struct { 17 k, v string 18 }{ 19 {"", ""}, // empty key 20 {"k=v", ""}, // '=' in key 21 {"\x00", ""}, // '\x00' in key 22 {"k", "\x00"}, // '\x00' in value 23 } 24 25 func TestSetenvUnixEinval(t *testing.T) { 26 for _, tt := range setenvEinvalTests { 27 err := Setenv(tt.k, tt.v) 28 if err == nil { 29 t.Errorf(`Setenv(%q, %q) == nil, want error`, tt.k, tt.v) 30 } 31 } 32 } 33 34 var shellSpecialVarTests = []struct { 35 k, v string 36 }{ 37 {"*", "asterisk"}, 38 {"#", "pound"}, 39 {"$", "dollar"}, 40 {"@", "at"}, 41 {"!", "exclamation mark"}, 42 {"?", "question mark"}, 43 {"-", "dash"}, 44 } 45 46 func TestExpandEnvShellSpecialVar(t *testing.T) { 47 for _, tt := range shellSpecialVarTests { 48 Setenv(tt.k, tt.v) 49 defer Unsetenv(tt.k) 50 51 argRaw := fmt.Sprintf("$%s", tt.k) 52 argWithBrace := fmt.Sprintf("${%s}", tt.k) 53 if gotRaw, gotBrace := ExpandEnv(argRaw), ExpandEnv(argWithBrace); gotRaw != gotBrace { 54 t.Errorf("ExpandEnv(%q) = %q, ExpandEnv(%q) = %q; expect them to be equal", argRaw, gotRaw, argWithBrace, gotBrace) 55 } 56 } 57 }