1
0
mirror of https://github.com/golang/go synced 2024-11-12 03:50:21 -07:00

runtime, runtime/debug, runtime/race: deflake tests

R=golang-dev, dvyukov, bradfitz
CC=golang-dev
https://golang.org/cl/8366044
This commit is contained in:
Albert Strasheim 2013-04-07 11:37:37 -07:00 committed by Brad Fitzpatrick
parent dc7daa550a
commit 4235fa8f2a
3 changed files with 21 additions and 3 deletions

View File

@ -14,6 +14,22 @@ import (
"text/template"
)
// testEnv excludes GOGCTRACE from the environment
// to prevent its output from breaking tests that
// are trying to parse other command output.
func testEnv(cmd *exec.Cmd) *exec.Cmd {
if cmd.Env != nil {
panic("environment already set")
}
for _, env := range os.Environ() {
if strings.HasPrefix(env, "GOGCTRACE=") {
continue
}
cmd.Env = append(cmd.Env, env)
}
return cmd
}
func executeTest(t *testing.T, templ string, data interface{}) string {
checkStaleRuntime(t)
@ -37,13 +53,13 @@ func executeTest(t *testing.T, templ string, data interface{}) string {
}
f.Close()
got, _ := exec.Command("go", "run", src).CombinedOutput()
got, _ := testEnv(exec.Command("go", "run", src)).CombinedOutput()
return string(got)
}
func checkStaleRuntime(t *testing.T) {
// 'go run' uses the installed copy of runtime.a, which may be out of date.
out, err := exec.Command("go", "list", "-f", "{{.Stale}}", "runtime").CombinedOutput()
out, err := testEnv(exec.Command("go", "list", "-f", "{{.Stale}}", "runtime")).CombinedOutput()
if err != nil {
t.Fatalf("failed to execute 'go list': %v\n%v", err, string(out))
}

View File

@ -11,6 +11,8 @@ import (
)
func TestReadGCStats(t *testing.T) {
defer SetGCPercent(SetGCPercent(-1))
var stats GCStats
var mstats runtime.MemStats
var min, max time.Duration

View File

@ -147,7 +147,7 @@ func runTests() ([]byte, error) {
// It is required because the tests contain a lot of data races on the same addresses
// (the tests are simple and the memory is constantly reused).
for _, env := range os.Environ() {
if strings.HasPrefix(env, "GOMAXPROCS=") {
if strings.HasPrefix(env, "GOMAXPROCS=") || strings.HasPrefix(env, "GOGCTRACE=") {
continue
}
cmd.Env = append(cmd.Env, env)