From: Rob Pike Date: Mon, 19 Aug 2013 00:15:30 +0000 (+1000) Subject: testing: don't start timing a Parallel test until it's actually starting X-Git-Tag: go1.2rc2~504 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=6fb9cc1f63dced4ad2022fb4eac9f722cd12c708;p=gostls13.git testing: don't start timing a Parallel test until it's actually starting Fixes #5285. R=golang-dev, dvyukov CC=golang-dev https://golang.org/cl/13045044 --- diff --git a/src/pkg/testing/testing.go b/src/pkg/testing/testing.go index 4c81201a84..5019e07626 100644 --- a/src/pkg/testing/testing.go +++ b/src/pkg/testing/testing.go @@ -357,6 +357,9 @@ func (c *common) Skipped() bool { func (t *T) Parallel() { t.signal <- (*T)(nil) // Release main testing loop <-t.startParallel // Wait for serial tests to finish + // Assuming Parallel is the first thing a test does, which is reasonable, + // reinitialize the test's start time because it's actually starting now. + t.start = time.Now() } // An internal type but exported because it is cross-package; part of the implementation @@ -367,8 +370,6 @@ type InternalTest struct { } func tRunner(t *T, test *InternalTest) { - t.start = time.Now() - // When this goroutine is done, either because test.F(t) // returned normally or because a test failure triggered // a call to runtime.Goexit, record the duration and send @@ -384,6 +385,7 @@ func tRunner(t *T, test *InternalTest) { t.signal <- t }() + t.start = time.Now() test.F(t) }