blob: e14a0784f2bc9d954a2dd8cd643f6c3d37b347e1 [file] [log] [blame]
# This test is intended to verify that when a user does "go run -cover ..."
# or "go build -cover ...", packages named on the command line are
# always instrumented (but not their dependencies). This rule applies
# inside and outside the standard library.
[short] skip
[!GOEXPERIMENT:coverageredesign] skip
# Compile an object.
go tool compile -p tiny tiny/tiny.go tiny/tiny2.go
# Build a stdlib command with coverage.
go build -o $WORK/nm.exe -cover cmd/nm
# Save off old GOCOVERDIR setting
env SAVEGOCOVERDIR=$GOCOVERDIR
# Collect a coverage profile from running 'cmd/nm' on the object.
mkdir $WORK/covdata
env GOCOVERDIR=$WORK/covdata
exec $WORK/nm.exe tiny.o
# Restore previous GOCOVERDIR setting
env GOCOVERDIR=$SAVEGOCOVERDIR
# Check to make sure we instrumented just the main package, not
# any dependencies.
go tool covdata pkglist -i=$WORK/covdata
stdout cmd/nm
! stdout cmd/internal/goobj pkglist.txt
# ... now collect a coverage profile from a Go file
# listed on the command line.
go build -cover -o $WORK/another.exe testdata/another.go
mkdir $WORK/covdata2
env GOCOVERDIR=$WORK/covdata2
exec $WORK/another.exe
# Restore previous GOCOVERDIR setting
env GOCOVERDIR=$SAVEGOCOVERDIR
# Check to make sure we instrumented just the main package.
go tool covdata pkglist -i=$WORK/covdata2
stdout command-line-arguments
! stdout fmt
-- go.mod --
module example.prog
-- testdata/another.go --
package main
import "fmt"
func main() {
fmt.Println("Hi dad")
}
-- tiny/tiny.go --
package tiny
var Tvar int
-- tiny/tiny2.go --
package tiny
var Tvar2 bool