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

# Cleanup should run after F.Skip.
go test -run=FuzzTargetSkip
stdout cleanup

# Cleanup should run after F.Fatal.
! go test -run=FuzzTargetFatal
stdout cleanup

# Cleanup should run after an unexpected runtime.Goexit.
! go test -run=FuzzTargetGoexit
stdout cleanup

# Cleanup should run after panic.
! go test -run=FuzzTargetPanic
stdout cleanup

# Cleanup should run in fuzz function on seed corpus.
go test -v -run=FuzzFunction
stdout '(?s)inner.*outer'

# TODO(jayconrod): test cleanup while fuzzing. For now, the worker process's
# stdout and stderr is connected to the coordinator's, but it should eventually
# be connected to os.DevNull, so we wouldn't see t.Log output.

-- go.mod --
module cleanup

go 1.15
-- cleanup_test.go --
package cleanup

import (
	"runtime"
	"testing"
)

func FuzzTargetSkip(f *testing.F) {
	f.Cleanup(func() { f.Log("cleanup") })
	f.Skip()
}

func FuzzTargetFatal(f *testing.F) {
	f.Cleanup(func() { f.Log("cleanup") })
	f.Fatal()
}

func FuzzTargetGoexit(f *testing.F) {
	f.Cleanup(func() { f.Log("cleanup") })
	runtime.Goexit()
}

func FuzzTargetPanic(f *testing.F) {
	f.Cleanup(func() { f.Log("cleanup") })
	panic("oh no")
}

func FuzzFunction(f *testing.F) {
	f.Add([]byte{0})
	f.Cleanup(func() { f.Log("outer") })
	f.Fuzz(func(t *testing.T, b []byte) {
		t.Cleanup(func() { t.Logf("inner") })
	})
}
