]> Cypherpunks repositories - gostls13.git/commitdiff
testing: skip extra -count iterations if there are no tests
authorMichael Pratt <mpratt@google.com>
Mon, 18 Oct 2021 22:34:24 +0000 (18:34 -0400)
committerMichael Pratt <mpratt@google.com>
Mon, 25 Oct 2021 15:43:33 +0000 (15:43 +0000)
When running benchmarks with high -count and no tests (either at all or
filtered with -run), the time for runTests to check for tests -count
times can add a significant delay to starting benchmarks.

To avoid this delay, make runTests bail out on the second iteration if
the first found no tests to run. We expect the same tests to run every
time, so there is no reason to duplicate work.

One caveat: the testing docs do not explicitly require the same subtests
to be run on every call, so this could break tests that depend on
multiple runs to actually run all tests. I consider such tests invalid,
but some may exist.

Fixes #49050

Change-Id: I7b34f3832b31493cc089ee0555e231f4dc690154
Reviewed-on: https://go-review.googlesource.com/c/go/+/356669
Trust: Michael Pratt <mpratt@google.com>
Run-TryBot: Michael Pratt <mpratt@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/testing/testing.go

index 6fb1a71d4335f3eb6fca09f19b662243dfc608e5..2ad2266e2d0781b1a5b24f51840984800dda242f 100644 (file)
@@ -1785,6 +1785,12 @@ func runTests(matchString func(pat, str string) (bool, error), tests []InternalT
                        if shouldFailFast() {
                                break
                        }
+                       if i > 0 && !ran {
+                               // There were no tests to run on the first
+                               // iteration. This won't change, so no reason
+                               // to keep trying.
+                               break
+                       }
                        ctx := newTestContext(*parallel, newMatcher(matchString, *match, "-test.run"))
                        ctx.deadline = deadline
                        t := &T{