cmd/go, testing: streamline direct use of test binaries
Before:
$ go test -c -cover fmt
$ ./fmt.test -test.covermode=set
PASS
coverage: 65.1% of statements in strconv
$
After:
$ go test -c -cover fmt
$ ./fmt.test
PASS
coverage: 65.1% of statements in strconv
$
In addition to being cumbersome, the old flag didn't make sense:
the cover mode cannot be changed after the binary has been built.
Another useful effect of this CL is that if you happen to do
$ go test -c -covermode=atomic fmt
and then forget you did that and run benchmarks,
the final line of the output (the coverage summary) reminds you
that you are benchmarking with coverage enabled, which might
not be what you want.
$ ./fmt.test -test.bench .
PASS
BenchmarkSprintfEmpty
10000000 217 ns/op
BenchmarkSprintfString
2000000 755 ns/op
BenchmarkSprintfInt
2000000 774 ns/op
BenchmarkSprintfIntInt
1000000 1363 ns/op
BenchmarkSprintfPrefixedInt
1000000 1501 ns/op
BenchmarkSprintfFloat
1000000 1257 ns/op
BenchmarkManyArgs 500000 5346 ns/op
BenchmarkScanInts 1000
2562402 ns/op
BenchmarkScanRecursiveInt 500
3189457 ns/op
coverage: 91.4% of statements
$
As part of passing the new mode setting in via _testmain.go, merge
the two registration mechanisms into one extensible mechanism
(a struct).
R=r
CC=golang-dev
https://golang.org/cl/
11219043