Currently, "dist test -compile-only" still runs the test binaries,
just with -run=^$ so no tests are run. It does this because, until
recently, "go test -c" would fail if passed multiple test packages.
But this has some unexpected consequences: init code still runs,
TestMain still runs, and we generally can't test cross-compiling of
tests.
Now that #15513 is fixed, we can pass multiple packages to "go test
-c". Hence, this CL make dist just use "go test -c" as one would
expect.
Found in the course of working on #37486, though it doesn't really
affect that.
Change-Id: If7d3c72c9e0f74d4ea0dd422411e5ee93b314be4
Reviewed-on: https://go-review.googlesource.com/c/go/+/488275
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Austin Clements <austin@google.com>
// Combine the flags.
args := append([]string{"test"}, build...)
if t.compileOnly {
- // We can't pass -c with multiple packages, so run the tests but
- // tell them not to do anything.
- args = append(args, "-run=^$")
+ args = append(args, "-c", "-o", os.DevNull)
} else {
args = append(args, run...)
}
// in which case every test will run nothing and succeed,
// with no obvious way to detect this problem (since no tests are running).
// So make 'no tests to run' a hard failure when testing package testing itself.
- // The compile-only builders use -run=^$ to run no tests, so allow that.
fmt.Print(chatty.prefix(), "FAIL: package testing must run tests\n")
testOk = false
}