From a25e368f44941c22406b2f88535ec9e812fd4dba Mon Sep 17 00:00:00 2001 From: Richard Miller Date: Wed, 6 Apr 2016 18:42:14 +0100 Subject: [PATCH] test: make goprint.go wait for goroutine termination Test goprint.go sometimes failed on a slow builder (plan9_arm) because of timing dependency. Instead of sleeping for a fixed time to allow the child goroutine to finish, wait explicitly for child termination by calling runtime.NumGoroutine until the returned value is 1. Fixes #15097 Change-Id: Ib3ef5ec3c8277083c774542f48bcd4ff2f79efde Reviewed-on: https://go-review.googlesource.com/21603 Reviewed-by: Brad Fitzpatrick Run-TryBot: Brad Fitzpatrick --- test/goprint.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/test/goprint.go b/test/goprint.go index cdaccf4f79..7cf6230fc6 100644 --- a/test/goprint.go +++ b/test/goprint.go @@ -8,9 +8,14 @@ package main -import "time" +import ( + "runtime" + "time" +) func main() { go println(42, true, false, true, 1.5, "world", (chan int)(nil), []int(nil), (map[string]int)(nil), (func())(nil), byte(255)) - time.Sleep(100*time.Millisecond) + for runtime.NumGoroutine() > 1 { + time.Sleep(10*time.Millisecond) + } }