mirror of
https://github.com/golang/go.git
synced 2025-11-07 04:01:00 +00:00
For #20322 For #51572 Change-Id: Id0b4799d097d01128e98ba4cc0092298357bca45 Reviewed-on: https://go-review.googlesource.com/c/go/+/389935 Trust: Ian Lance Taylor <iant@golang.org> Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
// 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.
|
|
|
|
//go:build unix
|
|
|
|
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)
|
|
}
|
|
}
|
|
}
|