# Test that when both race detection and coverage instrumentation are enabled,
# and seed values are being executed, the race detector isn't mistakenly
# triggered.

[short] skip
[!fuzz] skip
[!race] skip

# Test with coverage instrumentation enabled (-fuzz) and race instrumentation
# but without actually fuzzing the target (by using a non-matching pattern)
go test -fuzz=xxx -race -v
! stderr 'race detected during execution of test'

# Test with just race instrumentation enabled
go test -race -v
! stderr 'race detected during execution of test'

# Test with coverage and race instrumentation enabled, and a matching fuzz
# pattern
go test -fuzz=FuzzRace -race -v -fuzztime=200x
! stderr 'race detected during execution of test'

-- go.mod --
module test

-- race_test.go --
package race

import "testing"

func FuzzRace(f *testing.F) {
	for i := 0; i < 100; i++ {
		f.Add(i)
	}

	f.Fuzz(func(t *testing.T, i int) {
		t.Parallel()
	})
}
