| |
| # 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()) |
| } |