]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: add fuzzing coverage test
authorRoland Shoemaker <roland@golang.org>
Wed, 5 Jan 2022 20:25:28 +0000 (12:25 -0800)
committerRoland Shoemaker <roland@golang.org>
Wed, 5 Jan 2022 21:22:03 +0000 (21:22 +0000)
Adds a test script for fuzzing coverage instrumentation.

Fixes #48654

Change-Id: Ieea7b4146bd5581baae869441cc1c652dd7485f5
Reviewed-on: https://go-review.googlesource.com/c/go/+/375736
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>

src/cmd/go/testdata/script/test_fuzz_cov.txt [new file with mode: 0644]

diff --git a/src/cmd/go/testdata/script/test_fuzz_cov.txt b/src/cmd/go/testdata/script/test_fuzz_cov.txt
new file mode 100644 (file)
index 0000000..05b6348
--- /dev/null
@@ -0,0 +1,33 @@
+# Test that coverage instrumentation is working. Without the instrumentation
+# it is _extremely_ unlikely that the fuzzer would produce this particular
+# input in any reasonable amount of time.
+
+[short] skip
+[!fuzz-instrumented] skip
+
+! go test -fuzz=FuzzCov
+! stderr 'cov instrumentation working'
+
+-- go.mod --
+module test
+
+-- cov_test.go --
+package cov
+
+import "testing"
+
+func FuzzCov(f *testing.F) {
+       f.Fuzz(func(t *testing.T, b []byte) {
+               if len(b) == 8 &&
+                       b[0] == 'h' &&
+                       b[1] == 'e' &&
+                       b[2] == 'l' &&
+                       b[3] == 'l' &&
+                       b[4] == 'o' &&
+                       b[5] == ' ' &&
+                       b[6] == ':' &&
+                       b[7] == ')' {
+                       panic("cov instrumentation working")
+               }
+       })
+}