# This test checks that 'go test' prints a reasonable error when fuzzing is # enabled, and multiple package or multiple fuzz targets match. # TODO(#46312): support fuzzing multiple targets in multiple packages. [!fuzz] skip [short] skip env GOCACHE=$WORK/cache # With fuzzing disabled, multiple targets can be tested. go test ./... # With fuzzing enabled, at most one package may be tested, # even if only one package contains fuzz targets. ! go test -fuzz=. ./... stderr '^cannot use -fuzz flag with multiple packages$' ! go test -fuzz=. ./zero ./one stderr '^cannot use -fuzz flag with multiple packages$' go test -fuzz=. -fuzztime=1x ./one # With fuzzing enabled, at most one target in the same package may match. ! go test -fuzz=. ./two stdout '^testing: will not fuzz, -fuzz matches more than one fuzz test: \[FuzzOne FuzzTwo\]$' go test -fuzz=FuzzTwo -fuzztime=1x ./two -- go.mod -- module fuzz go 1.18 -- zero/zero.go -- package zero -- one/one_test.go -- package one import "testing" func FuzzOne(f *testing.F) { f.Fuzz(func(*testing.T, []byte) {}) } -- two/two_test.go -- package two import "testing" func FuzzOne(f *testing.F) { f.Fuzz(func(*testing.T, []byte) {}) } func FuzzTwo(f *testing.F) { f.Fuzz(func(*testing.T, []byte) {}) }