/roc-fuzz

Fuzz testing for Roc

Primary LanguageC++BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Roc Fuzz

The goal of this project is to make it easy for Roc programmers to write fuzz tests for their projects. It is a a custom platform and does not support arbitrary tasks. As such, it is just for testing pure roc code.

Currently, it requires roc built from source on the fuzz branch.

Once the compiler is built, simply run targets with the --fuzz option. Ok, that doesn't quite work yet. If building locally, run as:

ROC_LINK_FLAGS="-lc++" roc run --linker=legacy --fuzz --prebuilt-platform app.roc

If running from distribution, --prebuilt-platform can be omitted.

Current TODOs

  1. Exposes runs and max_total_time in fuzz and minimize.
  2. Exposes control over jobs and dictionary.
  3. Exposes shrink corpus command.
  4. Expand arbitrary to all builtin types (also Arbitrary.raw to just get all of the bytes?).
  5. Add other helpers like Arbitrary.choose.
  6. Vendor and build for more architecture/os pairs.
  7. If possible, think of a way to enable seeding the corpus.
  8. Docs and tooling to make it awesome to use.