diff options
Diffstat (limited to 'libgo/go/os/env_test.go')
-rw-r--r-- | libgo/go/os/env_test.go | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/libgo/go/os/env_test.go b/libgo/go/os/env_test.go index 16f19456381..4b860157b4c 100644 --- a/libgo/go/os/env_test.go +++ b/libgo/go/os/env_test.go @@ -49,6 +49,12 @@ var expandTests = []struct { {"${HOME}", "/usr/gopher"}, {"${H}OME", "(Value of H)OME"}, {"A$$$#$1$H$home_1*B", "APIDNARGSARGUMENT1(Value of H)/usr/foo*B"}, + {"start$+middle$^end$", "start$+middle$^end$"}, + {"mixed$|bag$$$", "mixed$|bagPID$"}, + {"$", "$"}, + {"$}", "$}"}, + {"${", ""}, // invalid syntax; eat up the characters + {"${}", ""}, // invalid syntax; eat up the characters } func TestExpand(t *testing.T) { @@ -60,6 +66,27 @@ func TestExpand(t *testing.T) { } } +var global interface{} + +func BenchmarkExpand(b *testing.B) { + b.Run("noop", func(b *testing.B) { + var s string + b.ReportAllocs() + for i := 0; i < b.N; i++ { + s = Expand("tick tick tick tick", func(string) string { return "" }) + } + global = s + }) + b.Run("multiple", func(b *testing.B) { + var s string + b.ReportAllocs() + for i := 0; i < b.N; i++ { + s = Expand("$a $a $a $a", func(string) string { return "boom" }) + } + global = s + }) +} + func TestConsistentEnviron(t *testing.T) { e0 := Environ() for i := 0; i < 10; i++ { @@ -103,7 +130,7 @@ func TestClearenv(t *testing.T) { defer func(origEnv []string) { for _, pair := range origEnv { // Environment variables on Windows can begin with = - // http://blogs.msdn.com/b/oldnewthing/archive/2010/05/06/10008132.aspx + // https://blogs.msdn.com/b/oldnewthing/archive/2010/05/06/10008132.aspx i := strings.Index(pair[1:], "=") + 1 if err := Setenv(pair[:i], pair[i+1:]); err != nil { t.Errorf("Setenv(%q, %q) failed during reset: %v", pair[:i], pair[i+1:], err) |