]> Cypherpunks repositories - gostls13.git/commit
cmd/go: rebuild as needed for tests of packages that add methods
authorRuss Cox <rsc@golang.org>
Tue, 6 Feb 2018 04:57:41 +0000 (23:57 -0500)
committerRuss Cox <rsc@golang.org>
Tue, 6 Feb 2018 17:00:03 +0000 (17:00 +0000)
commit85bdd05c0542e9274b1b5ffc3b329a7865fda5e2
tree1033affc3051c1a76fd89875fb5301567bc313d1
parentfd7331a821a6b79d5f2f82075c032ac459670d7d
cmd/go: rebuild as needed for tests of packages that add methods

If A's external test package imports B, which imports A,
and A's (internal) test code also adds something to A that
invalidates anything in the export data from a build of A
without its test code, then strictly speaking we need to
rebuild B against the test-augmented version of A before
using it to build A's external test package.

We've been skating by without doing this for a very long time,
but I knew we'd need to handle it better eventually,
I planned for it in the new build cache simplifications,
and the code was ready. Now that we have a real-world
test case that needs it, turn on the "proper rebuilding" code.

It doesn't really matter how much things slow down, since
a real-world test cases that caused an internal compiler error
before is now handled correctly, but it appears to be small:
I wasn't able to measure an effect on "go test -a -c fmt".
And of course most builds won't use -a and will be cached well.

Fixes #6204.
Fixes #23701.

Change-Id: I2cd60cf400d1928428979ab05831f48ff7cee6ca
Reviewed-on: https://go-review.googlesource.com/92215
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/go/go_test.go
src/cmd/go/internal/test/test.go