Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

testing: use T.Skip to mark a fuzz input as uninteresting #48299

Open
jayconrod opened this issue Sep 9, 2021 · 0 comments
Open

testing: use T.Skip to mark a fuzz input as uninteresting #48299

jayconrod opened this issue Sep 9, 2021 · 0 comments

Comments

@jayconrod
Copy link
Contributor

@jayconrod jayconrod commented Sep 9, 2021

Currently, the fuzzing engine marks an input as "interesting" if it activates coverage counters that were not activated before. Interesting inputs are minimized and added to the cached corpus. New inputs may be derived from them.

Fuzz target authors may not want to spend time fuzzing certain kinds of inputs, for example, because they're unlikely to find bugs or because they're expensive or impractical to test. It would be useful to have some signal that an input is not interesting and should not be added to the cached corpus. T.Skip seems like a reasonable way to do that.

func FuzzSqrt(f *testing.T) {
  f.Add(2.0)
  f.Add(99.9)
  f.Fuzz(func(t *testing.T, v float64) {
    if v < 0 {
      t.Skip()
    }
    s := math.Sqrt(v)
    if math.Abs(s*s - v) >= 0.001 {
      t.Fatal()
    }
  })
}

Compare with go-fuzz, which has a similar feature: the fuzz function may return:

  • +1 for an interesting input that should be given priority (we have no way to express this yet)
  • 0 normally
  • -1 for an input that should not be added to the corpus, even if it exposes new coverage (this feature)
@jayconrod jayconrod added this to the Backlog milestone Sep 9, 2021
@rsc rsc changed the title [dev.fuzz] testing: use T.Skip to mark an input as uninteresting testing: use T.Skip to mark a fuzz input as uninteresting Sep 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants