[!fuzz] skip
[short] skip
env GOCACHE=$WORK/cache

# FuzzA attempts to cause the mutator to create duplicate inputs that generate
# new coverage. Previously this would trigger a corner case when the fuzzer
# had an execution limit, causing it to deadlock and sit in the coordinator
# loop indefinitely, failing to exit once the limit had been exhausted.

go test -fuzz=FuzzA -fuzztime=100x -parallel=1

-- go.mod --
module m

go 1.16
-- fuzz_test.go --
package fuzz_test

import (
	"fmt"
	"testing"
)

func FuzzA(f *testing.F) {
	f.Add([]byte("seed"))
	i := 0
	f.Fuzz(func(t *testing.T, b []byte) {
		i++
		if string(b) == "seed" {
			if i == 0 {
				fmt.Println("a")
			} else if i > 1 {
				fmt.Println("b")
			}
		}
	})
}
