Commit 6fb9cc1f authored by Rob Pike's avatar Rob Pike

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
parent 43a39bfd
...@@ -357,6 +357,9 @@ func (c *common) Skipped() bool { ...@@ -357,6 +357,9 @@ func (c *common) Skipped() bool {
func (t *T) Parallel() { func (t *T) Parallel() {
t.signal <- (*T)(nil) // Release main testing loop t.signal <- (*T)(nil) // Release main testing loop
<-t.startParallel // Wait for serial tests to finish <-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 // An internal type but exported because it is cross-package; part of the implementation
...@@ -367,8 +370,6 @@ type InternalTest struct { ...@@ -367,8 +370,6 @@ type InternalTest struct {
} }
func tRunner(t *T, test *InternalTest) { func tRunner(t *T, test *InternalTest) {
t.start = time.Now()
// When this goroutine is done, either because test.F(t) // When this goroutine is done, either because test.F(t)
// returned normally or because a test failure triggered // returned normally or because a test failure triggered
// a call to runtime.Goexit, record the duration and send // a call to runtime.Goexit, record the duration and send
...@@ -384,6 +385,7 @@ func tRunner(t *T, test *InternalTest) { ...@@ -384,6 +385,7 @@ func tRunner(t *T, test *InternalTest) {
t.signal <- t t.signal <- t
}() }()
t.start = time.Now()
test.F(t) test.F(t)
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment