diff --git a/src/testing/testing.go b/src/testing/testing.go index 2081365abf3..c33a997372c 100644 --- a/src/testing/testing.go +++ b/src/testing/testing.go @@ -293,7 +293,8 @@ var _ TB = (*B)(nil) // may be called simultaneously from multiple goroutines. type T struct { common - name string // Name of test. + name string // Name of test. + isParallel bool startParallel chan bool // Parallel tests will wait on this. } @@ -430,6 +431,10 @@ func (t *T) Parallel() { // We don't want to include the time we spend waiting for serial tests // in the test duration. Record the elapsed time thus far and reset the // timer afterwards. + if t.isParallel { + panic("testing: t.Parallel called multiple times") + } + t.isParallel = true t.duration += time.Since(t.start) t.signal <- (*T)(nil) // Release main testing loop <-t.startParallel // Wait for serial tests to finish