[!fuzz] skip [short] skip env GOCACHE=$WORK/cache # Tests which verify the behavior and command line output when # running a fuzz target as a unit test. # Tests without -run. ! go test stdout FAIL stdout 'error here' ! go test -v stdout FAIL stdout 'error here' stdout '=== RUN FuzzFoo/thisfails' stdout '--- FAIL: FuzzFoo/thisfails' stdout '=== RUN FuzzFoo/thispasses' stdout '--- PASS: FuzzFoo/thispasses' # Tests where -run matches all seed corpora. ! go test -run FuzzFoo/this stdout FAIL stdout 'error here' ! stdout 'no tests to run' ! go test -run /this stdout FAIL stdout 'error here' ! stdout 'no tests to run' ! go test -v -run FuzzFoo/this stdout FAIL stdout 'error here' stdout '=== RUN FuzzFoo/thisfails' stdout '--- FAIL: FuzzFoo/thisfails' stdout '=== RUN FuzzFoo/thispasses' stdout '--- PASS: FuzzFoo/thispasses' ! stdout 'no tests to run' ! go test -v -run /this stdout FAIL stdout 'error here' stdout '=== RUN FuzzFoo/thisfails' stdout '--- FAIL: FuzzFoo/thisfails' stdout '=== RUN FuzzFoo/thispasses' stdout '--- PASS: FuzzFoo/thispasses' ! stdout 'no tests to run' # Tests where -run only matches one seed corpus which passes. go test -run FuzzFoo/thispasses stdout ok ! stdout 'no tests to run' go test -run /thispasses stdout ok ! stdout 'no tests to run' # Same tests in verbose mode go test -v -run FuzzFoo/thispasses stdout '=== RUN FuzzFoo/thispasses' stdout '--- PASS: FuzzFoo/thispasses' ! stdout '=== RUN FuzzFoo/thisfails' ! stdout 'no tests to run' go test -v -run /thispasses stdout '=== RUN FuzzFoo/thispasses' stdout '--- PASS: FuzzFoo/thispasses' ! stdout '=== RUN FuzzFoo/thisfails' ! stdout 'no tests to run' # Tests where -run only matches one seed corpus which fails. ! go test -run FuzzFoo/thisfails stdout FAIL stdout 'error here' ! stdout 'no tests to run' ! go test -run /thisfails stdout FAIL stdout 'error here' ! stdout 'no tests to run' ! go test -v -run FuzzFoo/thisfails stdout 'error here' stdout '=== RUN FuzzFoo/thisfails' stdout '--- FAIL: FuzzFoo/thisfails' ! stdout '=== RUN FuzzFoo/thispasses' ! stdout 'no tests to run' ! go test -v -run /thisfails stdout 'error here' stdout '=== RUN FuzzFoo/thisfails' stdout '--- FAIL: FuzzFoo/thisfails' ! stdout '=== RUN FuzzFoo/thispasses' ! stdout 'no tests to run' # Tests where -run doesn't match any seed corpora. go test -run FuzzFoo/nomatch stdout ok go test -run /nomatch stdout ok go test -v -run FuzzFoo/nomatch stdout '=== RUN FuzzFoo' stdout '--- PASS: FuzzFoo' stdout ok ! stdout 'no tests to run' go test -v -run /nomatch stdout '=== RUN FuzzFoo' stdout '--- PASS: FuzzFoo' stdout ok ! stdout 'no tests to run' -- go.mod -- module example.com/x go 1.16 -- x_test.go -- package x import "testing" func FuzzFoo(f *testing.F) { f.Add("this is fine") f.Fuzz(func(t *testing.T, s string) { if s == "fails" { t.Error("error here") } }) } -- testdata/fuzz/FuzzFoo/thisfails -- go test fuzz v1 string("fails") -- testdata/fuzz/FuzzFoo/thispasses -- go test fuzz v1 string("passes")