| [!fuzz] skip | |
| [short] skip | |
| env GOCACHE=$WORK/cache | |
| # This test checks that cached corpus loading properly handles duplicate entries (this can | |
| # happen when a f.Add value has a duplicate entry in the cached corpus.) Duplicate entries | |
| # should be discarded, and the rest of the cache should be loaded as normal. | |
| env GOCACHE=$WORK/cache | |
| env GODEBUG=fuzzdebug=1 | |
| mkdir -p $GOCACHE/fuzz/fuzztest/FuzzTarget | |
| go run ./populate $GOCACHE/fuzz/fuzztest/FuzzTarget | |
| go test -fuzz=FuzzTarget -fuzztime=10x . | |
| stdout 'entries: 5' | |
| -- go.mod -- | |
| module fuzztest | |
| go 1.17 | |
| -- fuzz_test.go -- | |
| package fuzz | |
| import "testing" | |
| func FuzzTarget(f *testing.F) { | |
| f.Add(int(0)) | |
| f.Fuzz(func(t *testing.T, _ int) {}) | |
| } | |
| -- populate/main.go -- | |
| package main | |
| import ( | |
| "path/filepath" | |
| "fmt" | |
| "os" | |
| ) | |
| func main() { | |
| for i := 0; i < 10; i++ { | |
| b := byte(0) | |
| if i > 5 { | |
| b = byte(i) | |
| } | |
| tmpl := "go test fuzz v1\nint(%d)\n" | |
| if err := os.WriteFile(filepath.Join(os.Args[1], fmt.Sprint(i)), []byte(fmt.Sprintf(tmpl, b)), 0777); err != nil { | |
| panic(err) | |
| } | |
| } | |
| } |