aboutsummaryrefslogtreecommitdiff
path: root/src/testing/testing.go
diff options
context:
space:
mode:
authorJay Conrod <jayconrod@google.com>2020-12-04 18:27:09 -0500
committerJay Conrod <jayconrod@google.com>2020-12-21 21:33:57 +0000
commit0e21d5be3790a55484f1dfcad6d8b1d2f253600e (patch)
tree83e2339c886e27b21d6625cb0a270fc6894cb9e8 /src/testing/testing.go
parent97df3ba792bda80b99a8508cf36dfba3d1c37576 (diff)
downloadgo-0e21d5be3790a55484f1dfcad6d8b1d2f253600e.tar.xz
[dev.fuzz] internal/fuzz: read and write interesting values in fuzz cache
'go test -fuzz' may now read and write interesting fuzzing values to directories in $GOCACHE/fuzz. Files in this directory are named $pkg/$test/$hash where $pkg is the package path containing the fuzz target, $test is the target name, and $hash is the SHA-256 sum of the data in the file. Note that different versions of the same package or packages with the same path from different modules may share the same directory. Although files are written into a subdirectory of GOCACHE, they are not removed automatically, nor are they removed by 'go clean -cache'. Instead, they may be removed with 'go clean -fuzzcache'. We chose to nest the fuzzing directory inside GOCACHE to avoid introducing a new environment variable, since there's no real need for users to specify a separate directory. Change-Id: I2032cf8e6c92f715cf36a9fc6a550acf666d2382 Reviewed-on: https://go-review.googlesource.com/c/go/+/275534 Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Katie Hockman <katie@golang.org> Trust: Katie Hockman <katie@golang.org> Trust: Jay Conrod <jayconrod@google.com>
Diffstat (limited to 'src/testing/testing.go')
-rw-r--r--src/testing/testing.go30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/testing/testing.go b/src/testing/testing.go
index c87e0a5b9a..e3e35fa13a 100644
--- a/src/testing/testing.go
+++ b/src/testing/testing.go
@@ -1353,17 +1353,17 @@ var errMain = errors.New("testing: unexpected use of func Main")
type matchStringOnly func(pat, str string) (bool, error)
-func (f matchStringOnly) MatchString(pat, str string) (bool, error) { return f(pat, str) }
-func (f matchStringOnly) StartCPUProfile(w io.Writer) error { return errMain }
-func (f matchStringOnly) StopCPUProfile() {}
-func (f matchStringOnly) WriteProfileTo(string, io.Writer, int) error { return errMain }
-func (f matchStringOnly) ImportPath() string { return "" }
-func (f matchStringOnly) StartTestLog(io.Writer) {}
-func (f matchStringOnly) StopTestLog() error { return errMain }
-func (f matchStringOnly) SetPanicOnExit0(bool) {}
-func (f matchStringOnly) CoordinateFuzzing(int, [][]byte, string) error { return errMain }
-func (f matchStringOnly) RunFuzzWorker(func([]byte) error) error { return errMain }
-func (f matchStringOnly) ReadCorpus(string) ([][]byte, error) { return nil, errMain }
+func (f matchStringOnly) MatchString(pat, str string) (bool, error) { return f(pat, str) }
+func (f matchStringOnly) StartCPUProfile(w io.Writer) error { return errMain }
+func (f matchStringOnly) StopCPUProfile() {}
+func (f matchStringOnly) WriteProfileTo(string, io.Writer, int) error { return errMain }
+func (f matchStringOnly) ImportPath() string { return "" }
+func (f matchStringOnly) StartTestLog(io.Writer) {}
+func (f matchStringOnly) StopTestLog() error { return errMain }
+func (f matchStringOnly) SetPanicOnExit0(bool) {}
+func (f matchStringOnly) CoordinateFuzzing(int, [][]byte, string, string) error { return errMain }
+func (f matchStringOnly) RunFuzzWorker(func([]byte) error) error { return errMain }
+func (f matchStringOnly) ReadCorpus(string) ([][]byte, error) { return nil, errMain }
// Main is an internal function, part of the implementation of the "go test" command.
// It was exported because it is cross-package and predates "internal" packages.
@@ -1406,7 +1406,7 @@ type testDeps interface {
StartTestLog(io.Writer)
StopTestLog() error
WriteProfileTo(string, io.Writer, int) error
- CoordinateFuzzing(int, [][]byte, string) error
+ CoordinateFuzzing(int, [][]byte, string, string) error
RunFuzzWorker(func([]byte) error) error
ReadCorpus(string) ([][]byte, error)
}
@@ -1448,6 +1448,12 @@ func (m *M) Run() (code int) {
m.exitCode = 2
return
}
+ if *matchFuzz != "" && *fuzzCacheDir == "" {
+ fmt.Fprintln(os.Stderr, "testing: internal error: -test.fuzzcachedir must be set if -test.fuzz is set")
+ flag.Usage()
+ m.exitCode = 2
+ return
+ }
if len(*matchList) != 0 {
listTests(m.deps.MatchString, m.tests, m.benchmarks, m.fuzzTargets, m.examples)