mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-16 10:43:29 +00:00
os: implement os.ExpandEnv
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
// Copyright 2013 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//+build darwin linux
|
||||
|
||||
package os_test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
. "os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var setenvEinvalTests = []struct {
|
||||
k, v string
|
||||
}{
|
||||
{"", ""}, // empty key
|
||||
{"k=v", ""}, // '=' in key
|
||||
{"\x00", ""}, // '\x00' in key
|
||||
{"k", "\x00"}, // '\x00' in value
|
||||
}
|
||||
|
||||
func TestSetenvUnixEinval(t *testing.T) {
|
||||
for _, tt := range setenvEinvalTests {
|
||||
err := Setenv(tt.k, tt.v)
|
||||
if err == nil {
|
||||
t.Errorf(`Setenv(%q, %q) == nil, want error`, tt.k, tt.v)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var shellSpecialVarTests = []struct {
|
||||
k, v string
|
||||
}{
|
||||
{"*", "asterisk"},
|
||||
{"#", "pound"},
|
||||
{"$", "dollar"},
|
||||
{"@", "at"},
|
||||
{"!", "exclamation mark"},
|
||||
{"?", "question mark"},
|
||||
{"-", "dash"},
|
||||
}
|
||||
|
||||
func TestExpandEnvShellSpecialVar(t *testing.T) {
|
||||
for _, tt := range shellSpecialVarTests {
|
||||
Setenv(tt.k, tt.v)
|
||||
defer Unsetenv(tt.k)
|
||||
|
||||
argRaw := fmt.Sprintf("$%s", tt.k)
|
||||
argWithBrace := fmt.Sprintf("${%s}", tt.k)
|
||||
if gotRaw, gotBrace := ExpandEnv(argRaw), ExpandEnv(argWithBrace); gotRaw != gotBrace {
|
||||
t.Errorf("ExpandEnv(%q) = %q, ExpandEnv(%q) = %q; expect them to be equal", argRaw, gotRaw, argWithBrace, gotBrace)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user