blob: b78137dbf91b4e8093e4ff218468f3f9303acca7 [file] [log] [blame]
# Test go build -pgo=auto flag.
# use default.pgo for a single main package
go build -n -pgo=auto ./a/a1
stderr 'compile.*-pgoprofile=.*default\.pgo.*a1.go'
# check that pgo applied to dependencies
stderr 'compile.*-p test/dep.*-pgoprofile=.*default\.pgo'
# use default.pgo for ... with a single main package
go build -n -pgo=auto ./a/...
stderr 'compile.*-pgoprofile=.*default\.pgo.*a1.go'
# error with multiple packages
! go build -n -pgo=auto ./b/...
stderr '-pgo=auto requires exactly one main package'
# build succeeds without PGO when default.pgo file is absent
go build -n -pgo=auto -o nopgo.exe ./nopgo
stderr 'compile.*nopgo.go'
! stderr '-pgoprofile'
# other build-related commands
go install -n -pgo=auto ./a/a1
stderr 'compile.*-pgoprofile=.*default\.pgo.*a1.go'
go run -n -pgo=auto ./a/a1
stderr 'compile.*-pgoprofile=.*default\.pgo.*a1.go'
go test -n -pgo=auto ./a/a1
stderr 'compile.*-pgoprofile=.*default\.pgo.*a1.go.*a1_test.go'
stderr 'compile.*-pgoprofile=.*default\.pgo.*external_test.go'
# go list commands should succeed as usual
go list -pgo=auto ./a/a1
go list -test -pgo=auto ./a/a1
go list -deps -pgo=auto ./a/a1
-- go.mod --
module test
go 1.20
-- a/a1/a1.go --
package main
import _ "test/dep"
func main() {}
-- a/a1/a1_test.go --
package main
import "testing"
func TestA(*testing.T) {}
-- a/a1/external_test.go --
package main_test
import "testing"
func TestExternal(*testing.T) {}
-- a/a1/default.pgo --
-- b/b1/b1.go --
package main
func main() {}
-- b/b1/default.pgo --
-- b/b2/b2.go --
package main
func main() {}
-- b/b2/default.pgo --
-- nopgo/nopgo.go --
package main
func main() {}
-- dep/dep.go --
package dep