[!fuzz] skip
[short] skip

# Run chatty fuzz targets with an error.
! go test -v chatty_error_fuzz_test.go
! stdout '^ok'
stdout 'FAIL'
stdout 'error in target'

# Run chatty fuzz targets with a fatal.
! go test -v chatty_fatal_fuzz_test.go
! stdout '^ok'
stdout 'FAIL'
stdout 'fatal in target'

# Run chatty fuzz target with a panic
! go test -v chatty_panic_fuzz_test.go
! stdout ^ok
stdout FAIL
stdout 'this is bad'

# Run skipped chatty fuzz targets.
go test -v chatty_skipped_fuzz_test.go
stdout ok
stdout SKIP
! stdout FAIL

# Run successful chatty fuzz targets.
go test -v chatty_fuzz_test.go
stdout ok
stdout PASS
stdout 'all good here'
! stdout FAIL

# Fuzz successful chatty fuzz target that includes a separate unit test.
go test -v chatty_with_test_fuzz_test.go -fuzz=Fuzz -fuzztime=1x
stdout ok
stdout PASS
! stdout FAIL
# TODO: It's currently the case that it's logged twice. Fix that, and change
# this check to verify it.
stdout 'all good here'
# Verify that the unit test is only run once.
! stdout '(?s)logged foo.*logged foo'

-- chatty_error_fuzz_test.go --
package chatty_error_fuzz

import "testing"

func Fuzz(f *testing.F) {
    f.Error("error in target")
}

-- chatty_fatal_fuzz_test.go --
package chatty_fatal_fuzz

import "testing"

func Fuzz(f *testing.F) {
    f.Fatal("fatal in target")
}

-- chatty_panic_fuzz_test.go --
package chatty_panic_fuzz

import "testing"

func Fuzz(f *testing.F) {
    panic("this is bad")
}

-- chatty_skipped_fuzz_test.go --
package chatty_skipped_fuzz

import "testing"

func Fuzz(f *testing.F) {
    f.Skip()
}

-- chatty_fuzz_test.go --
package chatty_fuzz

import "testing"

func Fuzz(f *testing.F) {
    f.Log("all good here")
    f.Fuzz(func(*testing.T, []byte) {})
}

-- chatty_with_test_fuzz_test.go --
package chatty_with_test_fuzz

import "testing"

func TestFoo(t *testing.T) {
    t.Log("logged foo")
}

func Fuzz(f *testing.F) {
    f.Log("all good here")
    f.Fuzz(func(*testing.T, []byte) {})
}
