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// +build aix darwin dragonfly freebsd hurd linux netbsd openbsd solaris 6 7package os_test 8 9import ( 10 "fmt" 11 . "os" 12 "testing" 13) 14 15var 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 24func 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 33var 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 45func 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} 57