blob: e8696e27e23baebd49ecbe2d29014ac46fdbc083 [file] [log] [blame]
# This test is intended to verify that coverage reporting is consistent
# between "go test -cover" and "go build -cover" with respect to how
# the "main" package is handled. See issue 57169 for details.
[short] skip
[!GOEXPERIMENT:coverageredesign] skip
# Build this program with -cover and run to collect a profile.
go build -cover -o $WORK/prog.exe .
# Save off old GOCOVERDIR setting
env SAVEGOCOVERDIR=$GOCOVERDIR
mkdir $WORK/covdata
env GOCOVERDIR=$WORK/covdata
exec $WORK/prog.exe
# Restore previous GOCOVERDIR setting
env GOCOVERDIR=$SAVEGOCOVERDIR
# Report percent lines covered.
go tool covdata percent -i=$WORK/covdata
stdout '\s*mainwithtest\s+coverage:'
! stdout 'main\s+coverage:'
# Go test -cover should behave the same way.
go test -cover .
stdout 'ok\s+mainwithtest\s+\S+\s+coverage:'
! stdout 'ok\s+main\s+.*'
-- go.mod --
module mainwithtest
go 1.20
-- mymain.go --
package main
func main() {
println("hi mom")
}
func Mainer() int {
return 42
}
-- main_test.go --
package main
import "testing"
func TestCoverage(t *testing.T) {
println(Mainer())
}