From: Russ Cox Date: Thu, 14 Feb 2013 19:21:26 +0000 (-0500) Subject: test/run: use correct $PWD to make os.Getwd less expensive X-Git-Tag: go1.1rc2~1035 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=551f3f27aaa69495a499eb3637b79480a2054cbc;p=gostls13.git test/run: use correct $PWD to make os.Getwd less expensive The commands being run are 'go tool this' and 'go tool that', and the go command will call Getwd during its init. R=golang-dev, iant CC=golang-dev https://golang.org/cl/7336045 --- diff --git a/test/run.go b/test/run.go index 36c8b7ad7b..5e167d6b0c 100644 --- a/test/run.go +++ b/test/run.go @@ -433,6 +433,7 @@ func (t *test) run() { cmd.Stderr = &buf if useTmp { cmd.Dir = t.tempDir + cmd.Env = envForDir(cmd.Dir) } err := cmd.Run() if err != nil { @@ -828,3 +829,20 @@ func checkShouldTest() { assertNot(shouldTest("// +build arm 386", "linux", "amd64")) assert(shouldTest("// This is a test.", "os", "arch")) } + +// envForDir returns a copy of the environment +// suitable for running in the given directory. +// The environment is the current process's environment +// but with an updated $PWD, so that an os.Getwd in the +// child will be faster. +func envForDir(dir string) []string { + env := os.Environ() + for i, kv := range env { + if strings.HasPrefix(kv, "PWD=") { + env[i] = "PWD=" + dir + return env + } + } + env = append(env, "PWD="+dir) + return env +}