aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorRoland Shoemaker <roland@golang.org>2022-01-07 12:18:30 -0800
committerRoland Shoemaker <roland@golang.org>2022-01-10 21:48:09 +0000
commit1f411e9b6d8849014653c89a9df77b8aadd082e6 (patch)
tree53ed960c82bb3f446596b6d17e2167faf1cca965 /src/cmd
parent8b9b365493220a7bfd87fd3c27301e43baa35a0d (diff)
downloadgo-1f411e9b6d8849014653c89a9df77b8aadd082e6.tar.gz
go-1f411e9b6d8849014653c89a9df77b8aadd082e6.zip
testing: only snapshot coverage during fuzzing
Only snapshot/reset coverage counters when we are actually fuzzing. This prevents a race when running corpus/seed values during the testing phase. Fixes #50488 Change-Id: I7dd5a0353a296c0b13eede29ad9af7c78814fa2d Reviewed-on: https://go-review.googlesource.com/c/go/+/376554 Trust: Katie Hockman <katie@golang.org> Reviewed-by: Katie Hockman <katie@golang.org> Trust: Roland Shoemaker <roland@golang.org> Run-TryBot: Roland Shoemaker <roland@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/go/testdata/script/test_fuzz_test_race.txt38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/cmd/go/testdata/script/test_fuzz_test_race.txt b/src/cmd/go/testdata/script/test_fuzz_test_race.txt
new file mode 100644
index 0000000000..0bbc1fdd7d
--- /dev/null
+++ b/src/cmd/go/testdata/script/test_fuzz_test_race.txt
@@ -0,0 +1,38 @@
+# 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
+
+# Test with coverage instrumentation enbaled (-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()
+ })
+} \ No newline at end of file