• Russ Cox's avatar
    cmd/go, testing: streamline direct use of test binaries · ccc45534
    Russ Cox authored
    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
    ccc45534
cover.go 2.2 KB