cmd/go: disallow profile flags when using -fuzz

Disallow the usage of coverprofile, blockprofile, cpuprofile, memprofile,
mutexprofile, and trace when fuzzing, since these currently do not work
as the user would expect.

Fixes #48178

Change-Id: Ibe6dfaef9b28a91c60c26fcad38c33a2a959d869
Reviewed-on: https://go-review.googlesource.com/c/go/+/360395
Trust: Roland Shoemaker <roland@golang.org>
Trust: Katie Hockman <katie@golang.org>
Run-TryBot: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Katie Hockman <katie@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
Roland Shoemaker 2021-11-01 10:28:52 -07:00
parent 4ec52e363e
commit 629ffebd45
2 changed files with 44 additions and 0 deletions

View file

@ -666,6 +666,12 @@ func runTest(ctx context.Context, cmd *base.Command, args []string) {
if len(pkgs) != 1 {
base.Fatalf("cannot use -fuzz flag with multiple packages")
}
if testCoverProfile != "" {
base.Fatalf("cannot use -coverprofile flag with -fuzz flag")
}
if profileFlag := testProfile(); profileFlag != "" {
base.Fatalf("cannot use %s flag with -fuzz flag", profileFlag)
}
// Reject the '-fuzz' flag if the package is outside the main module.
// Otherwise, if fuzzing identifies a failure it could corrupt checksums in

View file

@ -0,0 +1,38 @@
[!fuzz] skip
! go test -fuzz=FuzzTrivial -coverprofile=prof
! stdout .
stderr '^cannot use -coverprofile flag with -fuzz flag$'
! go test -fuzz=FuzzTrivial -blockprofile=prof
! stdout .
stderr '^cannot use -blockprofile flag with -fuzz flag$'
! go test -fuzz=FuzzTrivial -cpuprofile=prof
! stdout .
stderr '^cannot use -cpuprofile flag with -fuzz flag$'
! go test -fuzz=FuzzTrivial -memprofile=prof
! stdout .
stderr '^cannot use -memprofile flag with -fuzz flag$'
! go test -fuzz=FuzzTrivial -mutexprofile=prof
! stdout .
stderr '^cannot use -mutexprofile flag with -fuzz flag$'
! go test -fuzz=FuzzTrivial -trace=prof
! stdout .
stderr '^cannot use -trace flag with -fuzz flag$'
-- go.mod --
module example
go 1.18
-- fuzz_test.go --
package example
import "testing"
func FuzzTrivial(f *testing.F) {
f.Fuzz(func(t *testing.T, _ []byte) {})
}