1
0
mirror of https://github.com/golang/go synced 2024-11-24 16:20:13 -07:00

testing: document f.Fuzz requirement to not change underlying data

Updates #48606

Change-Id: I6d555fdefccd842fb65ec8d630b4808bcb54a825
Reviewed-on: https://go-review.googlesource.com/c/go/+/353977
Trust: Katie Hockman <katie@golang.org>
Run-TryBot: Katie Hockman <katie@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
Katie Hockman 2021-10-05 13:05:09 -04:00
parent 7ae83c8f38
commit 0b4d4998d5

View File

@ -299,11 +299,12 @@ var supportedTypes = map[reflect.Type]bool{
// This function sould be fast and deterministic, and its behavior should not // This function sould be fast and deterministic, and its behavior should not
// depend on shared state. No mutatable input arguments, or pointers to them, // depend on shared state. No mutatable input arguments, or pointers to them,
// should be retained between executions of the fuzz function, as the memory // should be retained between executions of the fuzz function, as the memory
// backing them may be mutated during a subsequent invocation. // backing them may be mutated during a subsequent invocation. ff must not
// modify the underlying data of the arguments provided by the fuzzing engine.
// //
// When fuzzing, F.Fuzz does not return until a problem is found, time runs // When fuzzing, F.Fuzz does not return until a problem is found, time runs out
// out (set with -fuzztime), or the test process is interrupted by a signal. // (set with -fuzztime), or the test process is interrupted by a signal. F.Fuzz
// F.Fuzz should be called exactly once unless F.Skip or F.Fail is called. // should be called exactly once, unless F.Skip or F.Fail is called beforehand.
func (f *F) Fuzz(ff interface{}) { func (f *F) Fuzz(ff interface{}) {
if f.fuzzCalled { if f.fuzzCalled {
panic("testing: F.Fuzz called more than once") panic("testing: F.Fuzz called more than once")