Skip to content

feat: fuzz corpus saving and replay in standard format #2552

@mds1

Description

@mds1

Component

Forge

Describe the feature you would like

#991 was closed by #1658, but as documented by this comment there's some other related work, so pulling that into separate issues.


Follows #2551 to allow saving and replaying entire fuzz campaigns instead of just failures.

  • Capture fuzz campaigns via ResultCache (Or some other mechanism TBD).
  • Persist fuzz campaigns to /cache/fuzz/corpus-latest.json.
  • Re-use foundry.toml flag to specify outdir.
  • Add a replay proptest strategy that is powered by a corpus.json file.
  • Extend --fuzz-input-file option to additionally take a corpus.json file & forge test to trigger replay.
  • Ensure /cache/fuzz is removed with forge clean.
  • Consider a --generate-test-cases flag to autogenerate concrete tests from the fuzz inputs. these can be logged to the console for the user to put anywhere, or inserted directly below the failed fuzz test in the test file

Including the generated dictionary (perhaps as an optional flag if it's too big?) would be useful as well

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions